So vermeiden Sie das Kontextmenü nach langem Drücken der Maus im Firefox OS-Simulator

So vermeiden Sie das Kontextmenü nach langem Drücken der Maus im Firefox OS-Simulator

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

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

Dieser Ereignis-Listener verhindert jedoch, dass ich Text in den Nachrichten auswählen kann.

Wie dieses Problem bei Touch-Geräten gelöst wird, interessiert mich nicht. Da ich einen PC verwende, kann ich contextmenudurch einen Klick mit der rechten Maustaste einen Event-Listener auslösen.

Wenn ich daher die linke Maustaste gedrückt halte, möchte ich die Anzeige dieses Ereignisses löschen contextmenu, aber weiterhin Text auswählen können.

Antwort1

Dies ist eine Pro-App-Lösung:

  1. Suchen Sie den Pfad zur App. Er lautet ungefähr so:

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

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

    Wahrscheinlich wird es so etwas sein wie

    someThing.addEventListener('contextmenu', function handler(event) {
      // ...
    });
    
  4. 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 ein application.zip.

Antwort2

Dieses Verhalten ist kein Fehler, sondern als Funktion gedacht:

Simulieren Sie Touch-Ereignisse auf dem Desktop

Wenn Sie es dennoch deaktivieren möchten, befolgen Sie diese Schritte:

  1. Öffnen Sie den Profilordner von Firefox:
    1. Gehe zuabout:support
    2. Suchen Sie im Abschnitt „Anwendungsgrundlagen“
    3. Suchen Sie in der Tabelle nach dem Eintrag „Profile Folder“
    4. Klicken Sie auf die Schaltfläche "Ordner anzeigen"
  2. Gehen Sie zum extensionsUnterordner
  3. Suchen Sie den Ordner Ihres Simulators, zB[email protected]
  4. Gehe zu b2g/modules/devtoolsUnterordnern
  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. Um das Auslösen des Ereignisses zu vermeiden, kommentieren Sie diese Zeile:

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

Beachten Sie, dass es wichtig ist, nur die Aussendung des Ereignisses zu verhindern und nicht aufzurufen sendContextMenu. Andernfalls würde der Klick nicht abgebrochen ( this.cancelClick = true), sodass die Textauswahl nicht richtig funktionieren würde.

verwandte Informationen