Greasemonkey: Überdenken Sie GM.registerMenuCommand (Polyfill hängt von der API ab, die entfernt wird)

Erstellt am 29. Apr. 2020  ·  7Kommentare  ·  Quelle: greasemonkey/greasemonkey

Da sich keine andere Browser-Engine die Mühe gemacht hat, dies zu unterstützen, hat Firefox seit einiger Zeit einen offenen Fehler zum Entfernen der Kontextmenü-Änderungsfunktion, auf die sich der registerMenuCommand-Teil des Polyfills stützt.

Es scheint jetzt jemanden zu geben, der daran interessiert ist, es "zu reparieren" (dh die Unterstützung zu entfernen), daher wäre es wahrscheinlich eine gute Idee, zu überdenken, dass GM4 keine eigene Unterstützung dafür bereitstellt.

Ich nutze es intensiv genug, um beispielsweise meine Konfigurations-UIs zu starten, sodass ich, wenn kein geeigneter Ersatz bereitgestellt wird, einfach den Support für GreaseMonkey einstellen und die Benutzer anweisen muss, dass ich aus technischen Gründen nur ViolentMoney und TamperMonkey unterstützen kann, weil Ich halte es für nicht akzeptabel, die Site mit solchen Konfigurations-UI-Schaltflächen "einmal einrichten und fast nie ändern" zu überladen.

Alle 7 Kommentare

+1
Ich mag die HTML 5-Kontextmenüs sehr, aber wenn/wenn sie verschwinden, hoffe ich auch, GM.registerMenuCommand zurück zu haben. Ich kann mir nicht vorstellen, eine andere hausgemachte Lösung für Multi-Site-Benutzerskripte zu verwalten.

Irgendwelche Vorschläge für eine noch existierende Benutzeroberfläche/API, die Sie verwenden möchten?

Ich schätze, wir werden gezwungen sein, Dinge im Affenmenü zu registrieren?

So machen es TamperMonkey und ViolentMonkey.

Ich nehme an, die andere Option wäre, die Möglichkeit zu untersuchen, die Polyfill-Funktion mit browser.menus.create anzunähern, um alle im Userscript registrierten Menüelemente in ein Untermenü des Kontextmenüs zu verschieben ... optimal, ohne sie auf Kontexte zu beschränken, da die Leute im Allgemeinen erwarten, dass das Kontextmenü kontextabhängig ist.

(Und im Idealfall wäre es immer noch gut, die Einträge "Dieses Benutzerskript konfigurieren" im Affenmenü statt im Kontextmenü zu platzieren, ähnlich wie der Addon-Manager von Firefox.)

Letzteres ist jedoch wirklich eine "Erforschung der Machbarkeit". Es ist so lange her, dass ich in der WebExtensions-API herumgestöbert habe, dass ich mich nicht mehr an ihre diesbezüglichen Einschränkungen erinnern kann. (Ich schreibe Benutzerskripte, weil sie portierbarer sind und aus Protest gegen die obligatorische Signatur von Erweiterungen.)

@arantius

Ich schätze, wir werden gezwungen sein, Dinge im Affenmenü zu registrieren?

Auch wenn das Kontextmenü nicht aus der Spezifikation obsolet wurde, hat seine Verwendung anstelle von GM_registerMenuCommand folgende Nachteile:

  • Es wird immer in das Kontextmenü des Browsers eingefügt, was beim Browsen im Weg steht
  • Da es in einen unsicheren Kontext (DOM der Webseite) eingefügt wird, kann es zu Datenschutz- und Sicherheitsproblemen kommen
  • Nicht verfügbar, wenn das Kontextmenü von der Seite der Webseite blockiert wird.

Firefox-Trunk hat gerade einen Patch gelandet, um den Zugriff auf <menuitem> mit einem Ziel-Release-Meilenstein von Firefox 85 zu deaktivieren.

https://bugzilla.mozilla.org/show_bug.cgi?id=1680596#c11

(Insbesondere wird es hinter ein dom.menuitem.enabled Pref gesetzt, das standardmäßig auf false gesetzt ist.)

@arantius Die Implementierung von GM.registerMenuCommand() wurde zu einem dringenden Problem.

Diese API wurde sowohl in Violemntmonkey und Tampermonkey als auch in Greasemonkey 3.x implementiert. Es ist, wie oben erwähnt, nicht anderweitig austauschbar und wichtig für die Kompatibilität.

Ich habe alle vorherigen Bedenken bezüglich der Implementierung im https://github.com/greasemonkey/greasemonkey/pull/2770-Update angesprochen. Warum lässt sich das nicht zusammenführen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen