2016-07-12 13 views
0

Ich bemerkte, dass in meinem Winkel app EigentumSo aktivieren Zeiger Ereignisse

window.navigator.pointerEnabled 

kehrt true

Nun, da ich einige Tests machen möchte, die Zeiger-Ereignisse innerhalb eines jsfiddle beinhaltet .net habe ich bemerkt, dass diese Ereignisse dort nicht anwesend sind. Dies hat wahrscheinlich etwas damit zu tun, dass hier die pointerEnabled Eigenschaft undefined ist.

Meine Frage ist, wie wird diese Eigenschaft gesteuert, wie kann ich es aktivieren?

+0

meinen Sie Mauszeiger-Ereignis? –

+0

Ich arbeite mit einer Maus, wenn Sie das meinen. Es wird wie folgt verwendet: 'element.addEventListener ('pointerdown', function (e) {....' –

Antwort

0

Pointer events bieten eine neue Möglichkeit, Maus- und Touch-Ereignisse mit einer Schnittstelle zu behandeln. Die Unterstützung für Zeiger-Ereignisse ist derzeit noch eher spärlich. Derzeit haben IE11 und Edge direkte Unterstützung, IE10 mit Präfix. FF und Chrome (> = 53) entwickeln es aktiv und lassen es hinter Flaggen verschwinden (Siehe: chrome://flags/#enable-pointer-events). Von Safari gibt es bisher keine öffentlichen Signale.

Es gibt keine Möglichkeit, es für Ihre Benutzer zu aktivieren oder zu deaktivieren. Entweder ein Browser unterstützt oder nicht.

window.navigator.pointerEnabled ist die veraltete Möglichkeit zu überprüfen, ob der Browser es unterstützt. Der empfohlene Weg ist zu überprüfen, ob window.PointerEvent definiert ist.

Es gibt eine polyfill, um FF, CH, IE10 und Safari zu unterstützen.

0

Wenn Sie Ihren Code in Firefox testen, müssen Sie den Browser so konfigurieren, dass Zeigerereignisse aktiviert werden, da sie momentan nicht standardmäßig aktiviert sind (mein aktuellstes Update ab 2017.xi.15 ist Firefox Quantum 57.0.2 (64-bit), was ich hier poste, könnte sich in späteren Versionen ändern!).

Dazu müssen Sie eine neue Registerkarte starten und "about: config" in die Adressleiste eingeben. Dann suchen Sie nach dem Eintrag:

dom.w3c_pointer_events.enabled

und den Status dieses boolean Wert auf true ändern.

Sofern Sie dies nicht tun, wird Firefox Zeigerereignisse überhaupt nicht behandeln. Dies wird sich wahrscheinlich in der Zukunft ändern. Beachten Sie jedoch, dass die Verarbeitung von Zeigerereignissen wahrscheinlich ein Minenfeld ist, wenn Sie an der browserübergreifenden Kompatibilität interessiert sind. Die neueste Version von Chrome, die auf meinem Computer ausgeführt wird, nämlich Version 63.0.3239.84 (Official Build) (64-Bit), verarbeitet z. B. Zeigerereignisse, ohne den Browser zu durchsuchen und neu zu konfigurieren, aber Firefox hat mir bis Ende keine Kopfschmerzen bereitet Ich habe das obige Konfigurationsproblem entdeckt und ähnliche Probleme werden wahrscheinlich auch in anderen Browsern auftreten.

Nur um das Problem zu verschärfen, ermöglicht die Windows-Version von Firefox Sie Zeigerereignisse zu aktivieren, aber sie sind nicht unterstützt überhaupt noch auf der Firefox Mobile für Android-Version des Browsers. Daher verhält sich derselbe Browser wahrscheinlich anders, wenn man die Plattform wechselt, nur um den Albträumen in der Programmierung etwas hinzuzufügen.

Ich bin nicht vertraut mit Safari oder Opera, aber Benutzer dieser Browser sind stark empfohlen, um zu überprüfen, ob ähnliche Support-Probleme gelten, wenn Zeiger Ereignisse verwenden!

Daher spielt es keine Rolle, ob Sie Zeigerereignisse nativ oder über ein Framework wie Angular behandeln, wenn der Browser Pointer-Ereignisse nicht von Anfang an aktiviert. Ich verschwendete mehrere Stunden mit diesem Thema und dachte, es wäre eine gute Idee, anderen die gleiche Frustration zu ersparen.

Natürlich wird dies nicht löst das Problem der Endbenutzer nicht diesen zu wissen, und die App auf ihren Systemen versagt, wenn sie versuchen, sie auszuführen, ohne den Browser zu konfigurieren, dies zu tun. Oder, schlimmer noch, Ihre App schlägt fehl, weil ihre Browser keine Zeiger-Ereignisse unterstützen (z. B. Firefox Mobile für Android, die ich oben zitiert habe). Endnutzer erwarten, dass die Apps unabhängig von ihrer Hardware sofort einsatzbereit sind, mit der Ausnahme, dass dies zur Erfüllung dieser Aufgabe im Moment zu hässlichen Hürden führt. Eine davon ist, dass Touch-Ereignis-Unterstützung ist auch hinter einem Config-Flag in Firefox versteckt, so dass Sie nicht einmal garantieren können, dass auf separate Berührungsereignisse zurückfallen, falls Zeigerereignisse nicht unterstützt werden, wird Ihre App vor Fehler zu speichern.

Im Moment ist Chrome der einzige große Browser, der in dieser Hinsicht eine gewisse Konsistenz zwischen den Plattformen gewährleistet. Code, den ich mit Zeigerereignissen geschrieben habe, funktioniert sowohl auf einem Desktop-Computer als auch auf einem Tablet, wenn ich Chrome starte, aber mir ist jetzt klar, dass Firefox mir Kopfschmerzen bereiten wird, wenn ich versuche, den Code auf dem Tablette.

Es gibt wahrscheinlich andere Probleme lauern zusätzlich zu den oben genannten warten auf Sie (vor allem, wenn Sie die neuen CSS-Pointer-Event-Funktionen auch verwenden!), Aber sie sind richtig für anderswo reserviert.