Ich suche nach einer Möglichkeit, die Textauswahl auf einer Webseite zu verfolgen. Ich brauche Code, der ausgeführt wird, wenn die Auswahl geändert wird. Ich habe dies erfolgreich auf allen gängigen Desktop-Browsern gemacht, aber das scheint nicht auf Firefox für Android zu funktionieren.
Ich habe drei Ansätze ausprobiert (keine funktionierte!):
"mouseup"
-Ereignis abzufangen und zu prüfen, ob es ein
nicht leere Textauswahl. Problem ist "mouseup"
wird nicht erhalten
ausgelöst, wenn während des mousedown-move-up eine Auswahl getroffen wurde
Sequenz! "touchend"
-Ereignis zu tun - Das gleiche Ergebnis. "selectionchange"
abzufangen. Ich habe gesehen, dass es nicht ist
Wird ausgelöst, wenn sich die Auswahl ändert, da der Konfigurationsschlüssel benötigt wird
"dom.select_events.enabled"
wird gesetzt. Dies ist standardmäßig false
und ich kann meine Besucher natürlich nicht bitten, die Browsereinstellungen zu ändern: -) Außerdem werden die ersten beiden Ereignisse erwartungsgemäß nicht ausgelöst, wenn die Auswahl durch Ziehen der Start / Ende-Auswahlmarkierungen erweitert oder reduziert wird.
Die einzige Lösung, an die ich jetzt denken kann, ist ein periodischer Poller (mit setInterval), der prüft, ob es eine Textauswahl gibt. Das ist definitiv unrein und anti-performance.
Alle Alternativen und / oder Ratschläge sind sehr hilfreich.
Danke
Momentan scheint die Umfrage die einzige Lösung zu sein.
Allerdings ist das selectionchange
-Ereignis derzeit experimentell in Firefox für Android Nightly implementiert . Er kann aktiviert werden, indem das Flag dom.select_events.enabled
auf true
(standardmäßig false
) gesetzt wird.
In Nightly-Builds ist dieses Flag bereits standardmäßig auf true
eingestellt. Daher besteht die Möglichkeit, dass Sie es in ein paar Monaten normal verwenden können.
(UNTESTED !!)
Auch wenn onselectstart
in Firefox für Android noch nicht produktiv verwendet werden kann, ist die einzige praktikable einfache Lösung das Polling.
Um die Leistung zu verbessern und die Kosten zu senken, kann polling im Fenster blur
event gestartet werden. Wenn der Benutzer eine Auswahl trifft, sollte der Fokus auf das Ansichtsfenster (ungetestet) gesetzt werden.
Wenn der Fokus zurückgegeben wird , kann der Abrufvorgang gestoppt werden .
%Vor%Um zu überprüfen, ob der Browser tatsächlich Textauswahlereignisse unterstützt , können Sie diese Funktion verwenden:
%Vor%
Eine dritte Idee ist die Deaktivierung der Textauswahl für mobile Firefox-Benutzer über CSS ( -moz-user-select: none
), die Implementierung einer benutzerdefinierten Textauswahlfunktion basierend auf den Start- und Endpositionen und die Rückübertragung des nativen Auswahlbereichs über HTMLElement.setSelectionRange()
an den Browser. .
Tags und Links javascript android events javascript-events textselection