.setCapture und .releaseCapture in Chrome

8

Ich habe eine JavaScript-Komponente auf HTML5-Leinwand, die Mausereignisse erfassen und freigeben muss. In der Steuerung klickt der Benutzer auf einen Bereich und zieht sich, um eine Änderung zu bewirken. Auf dem PC möchte ich, dass der Benutzer weiterhin außerhalb des Browsers ziehen kann und die Leinwand das Mouse-Up-Ereignis erhält, wenn die Schaltfläche außerhalb des Fensters freigegeben wird.

Allerdings werden meiner Meinung nach capture und releaseCapture in Chrome nicht unterstützt.

Gibt es eine Problemumgehung?

    
Robinson 14.05.2015, 07:37
quelle

2 Antworten

13

In einem 2009 verfassten Artikel wird beschrieben, wie Sie browserübergreifendes Ziehen implementieren können, das weiterhin Mauszeigerereignisse auslöst, auch wenn der Benutzer den Cursor aus dem Fenster herausbewegt.

Ссылка

Hier ist der wesentliche Code aus dem Artikel:

%Vor%

Der Artikel enthält eine ziemlich gute Erklärung dessen, was vor sich geht, aber es gibt ein paar Lücken, in denen Wissen vermutet wird. Grundsätzlich (glaube ich), in Chrome und Safari, wenn Sie mit Mausklick auf das Dokument dann, wenn der Benutzer klickt nach unten und hält die Maus, wird das Dokument weiterhin mousemove Ereignisse erhalten, auch wenn der Cursor das Fenster verlässt. Diese Ereignisse werden nicht an untergeordnete Knoten des Dokuments weitergegeben. Sie müssen daher auf Dokumentebene vorgehen.

    
JDB 30.09.2015, 14:35
quelle
1

Chrome unterstützt setPointerCapture , das Teil des W3C Empfehlungen zu Pointer-Events . Daher wäre es eine Alternative, Zeigerereignisse und diese Methoden zu verwenden.

Vielleicht möchten Sie den Pointer-Events-Polyfill verwenden, um andere Browser zu unterstützen.

    
robx 28.12.2017 17:57
quelle

Tags und Links