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?
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.
Chrome unterstützt setPointerCapture
, das Teil des W3C
Vielleicht möchten Sie den Pointer-Events-Polyfill verwenden, um andere Browser zu unterstützen.
Tags und Links javascript html5 google-chrome