Greasemonkey: Überdenken Sie die Implementierung von GM_registerMenuCommand in GM 4.x

Erstellt am 20. Nov. 2017  ·  5Kommentare  ·  Quelle: greasemonkey/greasemonkey

Wie ich gesehen habe (siehe Kommentar) wird GM_registerMenuCommand durch das HTML5-Kontextmenü ersetzt. und es ist nicht geplant, es in GM 4.x hinzuzufügen.

Trotzdem habe ich dieses separate Thema gestartet. in der Hoffnung, dass Sie es sich noch einmal überlegen.


Mir ist bewusst, dass das Hinzufügen einiger Kontextmenüoptionen im nativen Kontextmenü,
ist nützlich für diejenigen, die mehr Einträge hinzufügen möchten.
Wie dieses neue Testskript von arantius search-with-google .
Screenshots:
2017-11-20_1719082017-11-20_172014


Aber für Benutzerskripte, die GM_registerMenuCommand nur für Einstellungen verwenden, dh Sie konfigurieren dann nur ab und zu.
und gelten für alle Seiten,
wie das beliebte:
Mouseover Popup Image Viewer , ( Einstellungs-Screenshot )
YouTube-Linktitel ( Einstellungs-Screenshot ) und
Linkify Plus Plus ( Einstellungs-Screenshot )

Stellen Sie sich vor, Sie hätten diese Skripte installiert, die insgesamt 3 Einträge oben im Kontextmenü erstellen
die meistens nicht benötigt werden:
es würde das Kontextmenü auf der Seite überladen und unpraktisch machen.

Und dann der Skriptautor, um das Kontextmenü nicht zu überladen, nur um Einstellungen anzubieten,
er würde entweder auf jeder Seite eine Tastenkombination registrieren (ohne Benutzeroberfläche?)
oder erstellen Sie auf jeder Seite ein neues dediziertes Schaltflächenelement.


Daher möchte ich Sie bitten, die Implementierung von GM_registerMenuCommand im Popup der Symbolleisten-Schaltfläche zu überdenken, ähnlich wie es in GM 3.x sowie in den anderen am häufigsten verwendeten Skript-Managern, Tampermonkey und Gewalttätiger Affe.
,
Es würde zwischen/unter dem Eintrag "Greasemonkey ist aktiv/deaktiviert" erscheinen,
und über der Liste 'Benutzerskripte für diese Registerkarte' (GM 4.1 beta4).

Hilfreichster Kommentar

Alle 5 Kommentare

Als Referenz zitiere ich die entsprechende Diskussion von https://github.com/greasemonkey/greasemonkey/issues/2559 :


(acht04)

_arantius Ich habe gesehen, dass GM_registerMenuCommand durch das HTML5-Kontextmenü ersetzt wurde. Gibt es einen Plan, es in GM 4.x hinzuzufügen? Ich kann das Tracking-Problem nicht finden._

(arantius)

_Nein. Greasemonkeys Politik war es (seit langer Zeit), keine "Benutzerbereich"-Funktionen zu implementieren. Jedes Skript kann dies tun, oder @require etwas wie dieses Polyfill, das dies tut. Greasemonkey muss diese Funktion weder erstellen noch unterstützen, damit Skripte sie verwenden können. Hier geht es lediglich darum, das zu tun, was Polyfill tut: es einfacher zu machen, Skripte zu aktualisieren, damit sie sowohl mit alten als auch mit neuen Versionen von Greasemonkey kompatibel sind._

(acht04)

_Ich meinte, ob GM4 auch eine API zum Ausführen von Skriptbefehlen über die Benutzeroberfläche des Userscript-Managers wie das alte GM_registerMenuCommand bereitstellt, ohne zu fragen, ob es in GM eine HTML5-Kontextmenü-API geben wird. GM_registerMenuCommand wird oft verwendet, um einen Skriptkonfigurationsdialog zu starten, der IMHO nicht als HTML5-Kontextmenü gefüllt werden sollte._

_Übrigens, ich habe vor ein paar Monaten eine Bibliothek erstellt, um mit HTML-Kontextmenüs zu arbeiten, die die Eigenschaft contextmenu auf der Seite wiederverwenden würde, wenn sie bereits festgelegt ist:_
_ https://github.com/eight04/GM_context_

(arantius)

_GM_registerMenuCommand wird oft verwendet, um einen Skriptkonfigurationsdialog zu starten, der IMHO nicht als HTML5-Kontextmenü gefüllt werden sollte_

_Warum nicht?_

(acht04)

_Warum nicht?_

_1. Der Befehl im Kontextmenü sollte lauten:_

_- Eine Aktion, die mit einem bestimmten Kontext (Element) arbeitet. Wenn beispielsweise Text ausgewählt ist, wird der Befehl "Kopieren" angezeigt, der eine Aktion zum Arbeiten mit der Auswahl ist._
_- Eine Verknüpfung zum Ausführen des angegebenen Befehls zur Vereinfachung._
_Ein Befehl "Meine Userscript-Einstellung" fällt nicht in beide Kategorien. Es hängt nicht vom Kontext ab, es ist auch nicht erforderlich, eine Verknüpfung zur Konfiguration zu verwenden._

_2, Es ist nicht zuverlässig. Es kann durch Seitenskripte blockiert/ersetzt werden._

(trlkly)

_Ich stimme den Schwierigkeiten auf konzeptioneller Ebene zu. Ich habe keine Erweiterungen mehr, die das Kontextmenü für Einstellungen verwenden. Es würde ziemlich schnell ziemlich voll werden, wenn sie es täten, da ich viele Erweiterungen betreibe._

_Aber der Hauptgrund, den ich sehe, ist, dass Chrome das HTML5-Kontextmenü aus der Spezifikation entfernt hat , was bedeutet, dass es wahrscheinlich auch aus Firefox entfernt wird. Ich wusste nicht einmal, dass es existiert, da ich noch keine Website gesehen habe, die es verwendet. Apps drehen sich einfach selbst und blockieren das eigentliche Kontextmenü (was in den meisten Fällen ein riesiges Ärgernis ist. Dadurch wird die Funktionalität entfernt.)_

Das bereitet mir Kopfschmerzen, wenn ich darüber nachdenke, wie die Skripte interagieren würden. Angenommen, es gab eine Menüoption und diese Menüoption öffnete eine Art Fenster / Box / Dialog / was auch immer, um die Einstellungen zu ändern, wird dieses neu generierte Fenster als im Kontext "Inhaltsskript" betrachtet und kann daher Nachrichten an die Erweiterung senden? Und wenn nicht, wie schickt man dann eine Nachricht an das Inhaltsskript zurück, damit die Einstellungen geändert werden können?


Es scheint jedoch, dass Einstellungsmenüs ein gemeinsames Thema sind. Ich wäre dafür, statisch definierte Konfigurationsfelder im Metablock zu haben, die dann generiert werden und über das Monkey-Menü gespeichert / geändert werden können. Ähnlich wie resource , werden aber durch Monkey Menu -> Script -> Config -> Items geändert.

_Ich wäre dafür, statisch definierte Konfigurationsfelder im Metablock zu haben, die dann generiert werden und über das Monkey-Menü gespeichert / geändert werden können. Ähnlich einer Ressource, aber geändert, indem man Monkey Menu -> Script -> Config -> Items._

Ich befürchte, dass die Verwendung statischer Konfigurationsfelder im Metablock es zu einschränken würde:
zum Beispiel für das erstgenannte Skript Mouseover Popup Image Viewer ,
abgesehen vom aktuellen praktischen Layout (Dropdown-Menüs, Checkboxen, Textboxen mit Scrollbar, Textbereich),
Das Einstellungsmenü bietet derzeit:

  • die Einstellungen importieren/exportieren (in die Zwischenablage),
  • Installiere Regeln aus dem MPIV-Repository direkt in den Einstellungen,
  • es gibt Find-as-you-type-Regeln, wenn viele benutzerdefinierte Hostregeln installiert sind.
  • es überprüft, ob die eingegebene benutzerdefinierte Hostregel gültiges JSON ist, und hebt die Eingabezeile rot hervor, wenn nicht.

Außerdem sollte der Autor den gesamten Setup-Code neu schreiben müssen.

settings screenshot

@legnaleurc Meine Güte , das könnte für manche Leute ein Problem sein. Als absoluter Laie habe ich keine Ahnung, aber kennen Sie zufällig eine alternative Möglichkeit, Kontextmenüelemente hinzuzufügen, um die verwendete Methode zu ersetzen?

? Gibt es eine einfache Methode, die mir nicht bekannt ist und die von einem Benutzerskript aus verwendet werden kann?
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen