So vermeiden Sie das ContextMenu nach langem Drücken in Firefox OS Simulator

606
Oriol

Ich habe eine Chat-App in Firefox OS Simulator installiert.

Diese App fügt contextmenuEreignis-Listener hinzu, in denen ich einzelne Nachrichten entfernen kann.

Dieser Ereignislistener hindert mich jedoch daran, Text in den Nachrichten auszuwählen.

Es ist mir egal, wie dieses Problem in Touchgeräten gelöst wird. Da ich einen PC verwende, kann ich einen contextmenuEreignis-Listener durch Klicken mit der rechten Maustaste senden.

Daher möchte ich, wenn ich meine linke Maustaste gedrückt halte, rot von diesem contextmenuEreignis werden, aber trotzdem Text auswählen können.

0

2 Antworten auf die Frage

0
Oriol

Dieses Verhalten ist kein Fehler, es ist als Funktion gedacht:

Simulieren Sie Berührungsereignisse auf dem Desktop

Wenn Sie es dennoch deaktivieren möchten, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie den Profilordner von Firefox:
    1. Gehe zu about:support
    2. Suchen Sie den Abschnitt "Anwendungsgrundlagen"
    3. Suchen Sie in der Tabelle den Eintrag "Profile Folder"
    4. Klicken Sie auf die Schaltfläche "Ordner anzeigen"
  2. Gehen Sie in den extensionsUnterordner
  3. Finden Sie den Ordner Ihres Simulators, z fxos_2_2_simulator@mozilla.org
  4. b2g/modules/devtoolsWechseln Sie in Unterordner
  5. Öffnen Sie die touch-events.jsDatei mit einem geeigneten Texteditor
  6. Finden Sie die sendContextMenuFunktion:

    sendContextMenu: function teh_sendContextMenu(target, x, y, delay) { let doc = target.ownerDocument; let evt = doc.createEvent('MouseEvent'); evt.initMouseEvent('contextmenu', true, true, doc.defaultView, 0, x, y, x, y, false, false, false, false, 0, null); let content = this.getContent(target); let timeout = content.setTimeout((function contextMenu() { target.dispatchEvent(evt); this.cancelClick = true; }).bind(this), delay); return timeout; }, 
  7. Kommentieren Sie diese Zeile, um das Auslösen der Veranstaltung zu vermeiden:

    // target.dispatchEvent(evt); 
  8. Starten Sie den Simulator neu

Beachten Sie, dass es wichtig ist, nur den Versand des Ereignisses zu verhindern, anstatt nicht anzurufen sendContextMenu. Andernfalls wird der Klick nicht abgebrochen ( this.cancelClick = true), sodass die Textauswahl nicht ordnungsgemäß funktioniert.

0
Oriol

Dies ist eine Pro-App-Lösung:

  1. Finden Sie den Pfad zur App. Es wird so etwas sein

    [Firefox profile]\extensions\[Firefox OS Simulator]\profile\webapps\[ID]\application.zip 
  2. Sichern und entpacken

  3. Suchen Sie die JS-Datei, die den contextmenuEreignis-Listener hinzufügt .

    Wahrscheinlich wird es so etwas sein

    someThing.addEventListener('contextmenu', function handler(event) { // ... }); 
  4. Die linke Maustaste herausfiltern:

    someThing.addEventListener('contextmenu', function handler(event) { if(evt.button === 0) return; // ... }); 
  5. Stellen Sie sicher, dass der Simulator geschlossen ist

  6. Fügen Sie die geänderte Datei an der richtigen Stelle von ein application.zip.