Greasemonkey: Firefox < FF57 (z. B. FF56 und 52ESR) sollte nicht automatisch auf Greasemonkey 4 "aktualisiert" werden

Erstellt am 13. Dez. 2017  ·  13Kommentare  ·  Quelle: greasemonkey/greasemonkey

Das strict_min_version in GM 4.1 ist 52.0 . Dies führt dazu, dass Leute, die Firefox-Versionen verwenden, die ältere Erweiterungen (zB FF56 und 52ESR) unterstützen, auf 4.1 "aktualisieren". Viele Benutzer, die FF 52ESR verwenden oder weiterhin FF55/56 verwenden, tun dies speziell, damit sie weiterhin ältere Erweiterungen verwenden können.

Die Legacy-Version von Greasemonkey ist weitaus funktionaler als die 4.x-Version und wird es immer sein. Benutzer, die Versionen von Firefox < FF57 verwenden, sollten nicht automatisch auf Greasemonkey 4.x "aktualisiert" werden.

Daher sollte die manifest.json Folgendes haben:

"strict_min_version": "57.0"

Während Benutzer automatische Updates für GM oder Erweiterungen im Allgemeinen deaktivieren können (dh diese strict_min_version Einstellung kann von Profil zu Profil umgangen werden), ist GM4 nicht wirklich ein "Upgrade". Die meisten Benutzer halten es für ein Downgrade. Benutzer sollten nicht automatisch auf GM4 aktualisiert werden, wenn die Verwendung von GM4 aufgrund fehlender Unterstützung für Legacy-Erweiterungen in der von ihnen verwendeten Firefox-Version nicht erforderlich ist.

Hilfreichster Kommentar

Ich denke, der Anstoß liegt bei Ihnen, die gewünschte Version von Greasemonkey zu installieren und dann die automatische Aktualisierung zu deaktivieren.

Alle 13 Kommentare

Ich denke, die Einstellung der Mindestversion ist ein Artefakt der Zeit, in der die 3.x-Version eine eingebettete WebExtension hat, um die Skriptmigration zu erleichtern. Ohne es zu senken, glaube ich nicht, dass das Addon richtig installiert werden würde.

4.1 wurde mit einer niedrigeren Mindestversion gepusht, _oops?_. Ich glaube nicht, dass dies getan wurde, um Leute „absichtlich“ zu 4.x zu zwingen, und die Feindseligkeit in der Post ist unangebracht.

@Sxderp Es war keine Feindseligkeit beabsichtigt. Es tut mir leid, dass es so klang. Selbst wenn ich noch einmal lese, was ich geschrieben habe, bin ich mir nicht ganz sicher, welche(n) Teil(e) Sie als feindselig betrachten. Also habe ich es bearbeitet und (teilweise) erraten, was Sie für anstößig hielten.

Bitte beachten Sie, dass ich zwar "erzwungen" gesagt habe (was ich nur als Beschreibung dessen beabsichtigte, was mit Benutzern passiert), aber nicht "absichtlich erzwingen" (was darauf hindeuten würde, dass ich der Einstellung eine Absicht zuschreibe, was ich war nicht versucht zu tun). [Du lässt mich an mir selbst zweifeln. Ich glaube nicht, dass ich "absichtlich erzwingen" gesagt habe, aber jetzt, wo ich den ursprünglichen Kommentar bearbeitet habe, kann ich ihn nicht 100% verifizieren, da ich als Autor des Beitrags keine E-Mail mit dem Inhalt bekomme. Wenn ja, tut es mir leid. Es war nicht beabsichtigt.]

Hinweis: Obwohl ich Mozilla gegenüber negative Gefühle habe, was die Umstellung auf reine WebExtensions betrifft, habe ich das Gefühl, dass die Leute, die mit GM zu tun haben, gut mit der Situation umgehen, in die Mozilla sie gebracht hat. Dazu gehört, dass man sich mit der großen Anzahl von Leuten auseinandersetzen muss, die Erweiterungsautoren für Dinge verantwortlich machen, die vollständig die Schuld von Mozilla sind.

eyep, ich habe mein FF bei v56 "eingefroren" und jetzt bekomme ich mit GM4.1 einige obskure Fehler wie "Error: Permission denied to access property "nodeType"" bei sehr einfachen Skripten.

Ich bekomme einige obskure Fehler wie

Userscripts werden in einem „Content-Script“-Kontext ausgeführt. Wenn Objekte / Funktionen in diesem Kontext deklariert werden, müssen sie in das Fenster geklont werden, bevor das Fenster darauf zugreifen kann. Mozilla hat diese Sicherheitsfunktion implementiert und verhindert ein Durchsickern in den Seitenbereich.

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Sharing_content_script_objects_with_page_scripts

@Sxderp Ja, ich habe bereits in den Update-Notizen gelesen, dass unsafeWindow irgendwie anders funktioniert und man sollte exportFunction() or cloneInto() verwenden und denselben Artikel verlinken wie Sie (der erklärt, wie man Erweiterungen schreibt, nicht Benutzerskripte )). Niemand gibt Beispiele, wie man es tatsächlich in den Benutzerskripten macht. Aber das ist nebensächlich. Der Punkt ist, dass FF <= 56 nicht unter dieser ganzen Verzögerung leidet, also gibt es keinen Grund, es zu erzwingen.

Niemand gibt Beispiele, wie man es tatsächlich in den Benutzerskripten macht.

Ziemlich genau gleich. Wenn jemand „Inhaltsskript“ sagt, ersetzen Sie es durch „Benutzerskript“. Fahren Sie wie gewohnt fort.

Hier ist zum Beispiel etwas, das ich vor einiger Zeit gepostet habe.

Wenn Sie außerdem window.eval() verwenden, wird das Argument direkt im Seitenbereich ausgeführt, ohne dass Sie sich mit dem Export befassen müssen.

Danke. wie bei eval() - eval ist böse und die erste Regel bei der Verwendung von eval lautet "benutze eval nicht".

@Spown IMO, exportFunction() und cloneInto() sollten vermieden werden, da es sich nur um Firefox handelt. Ein wesentlicher Vorteil von Benutzerskripten und WebExtensions besteht darin, dass sie in verschiedenen Browsern ausgeführt werden können. Es gibt eine Vielzahl von Möglichkeiten, wie Sie Code im Seitenkontext ausführen können. Die Art und Weise, wie ich es sowohl in Benutzerskripten als auch in Inhaltsskripten mache, ist eine Funktion, executeInPage() , die Sie in dieser Antwort auf Stack Overflow finden. Es ermöglicht Ihnen, Parameter an die aufgerufene Funktion zu übergeben und diese Parameter in den Seitenkontext zu klonen. Mit einer einfachen Funktion, die den übergebenen Parameterwert einer Variablen im Fensterkontext zuweist (z. B. window[variableName] ), können Sie leicht das tun, was cloneInto() tut.

Es ist nicht so flexibel wie cloneInto() , da es nur Object , Array , function , RegExp , Date verarbeitet , und/oder andere Primitive ( Boolean , null , undefined, Number und String , aber nicht Symbol ).

@Sxderp das mag alles wahr sein, aber es ist mir eigentlich egal, da ich mich entscheide, nicht an dieser ganzen Sache teilzunehmen, indem ich nicht auf FF> 56 aktualisiere. Aber es sickert immer noch durch wie in diesem Fall.

Übrigens, der Versuch, die jQuery der Seite in meinem Skript (das den oben genannten Fehler zurückgibt) wie in Ihrem Beispiel wiederzuverwenden, führt immer noch zu demselben Fehler. nvm

Ich denke, der Anstoß liegt bei Ihnen, die gewünschte Version von Greasemonkey zu installieren und dann die automatische Aktualisierung zu deaktivieren.

Wenn ich auf Greasemonkey 4 aktualisiere, ist es dann möglich, Greasemonkey 3 zu installieren, um es herunterzustufen und weiter zu verwenden, wenn ich möchte? Oder nimmt Greasemonkey 4 irreversible Änderungen vor?

@garyking Sie sollten problemlos downgraden können. Skriptdateien sollten erhalten bleiben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen