Greasemonkey: Der Benutzer sollte in der Lage sein, die Skriptausführungsreihenfolge zu steuern

Erstellt am 15. Nov. 2017  ·  10Kommentare  ·  Quelle: greasemonkey/greasemonkey

Die Sortierung nach "Ausführungsreihenfolge" ist die Funktion, die ich im alten Dialogfeld "Verwalten" mit voller Registerkarte am meisten vermisse.
Derzeit (in GM 4.0) werden die Skripte anscheinend so ausgeführt, wie sie im Popup aufgelistet sind, dh in alphabetischer Reihenfolge.
Da diese Sortierung nicht mehr verfügbar ist, gibt es keine schnelle Möglichkeit mehr, Userscript-Konflikte zu lösen.


Als Referenz zitiere ich aus der (jetzt entfernten) Wiki-Seite "Skriptbestellung" :

_Skriptreihenfolge_

_Skripte können in folgender Reihenfolge angezeigt werden:_

  • _Status - Skripte sind nach Aktivierungsstatus geordnet: aktiviert oder deaktiviert, dann Name._
  • _Name - Skripte werden unabhängig vom Status alphabetisch nach Namen sortiert._
  • _ Ausführungsreihenfolge - Skripte werden nach Ausführungsindex sortiert._

_Diese letzte Reihenfolge ist wichtig für Benutzerskripte, die miteinander in Konflikt stehen. Durch Ändern der Reihenfolge der Skripte kann der Konflikt gelöst werden. Sie können die Reihenfolge ändern, indem Sie mit der rechten Maustaste auf ein Benutzerskript klicken und eine der Aktionen auswählen: Execute first , Execute sooner , Execute later oder Execute last ._

Hilfreichster Kommentar

Dies ist in der Tat ein Feature von 3.x, das in 4.x fehlt.

Ich werde definitiv keine bestimmte Funktion/Benutzeroberfläche versprechen, aber es wäre gut, zwei Skripte installieren zu können, die in einer bestimmten Reihenfolge ausgeführt werden müssen.

Alle 10 Kommentare

Dies ist in der Tat ein Feature von 3.x, das in 4.x fehlt.

Ich werde definitiv keine bestimmte Funktion/Benutzeroberfläche versprechen, aber es wäre gut, zwei Skripte installieren zu können, die in einer bestimmten Reihenfolge ausgeführt werden müssen.

Was wäre, wenn wir in der Skriptquelle ein // <strong i="5">@priority</strong> (int) Feature hätten, oder vielleicht sollten wir es Runlevel nennen, da die Priorität nicht führen könnte?
jeder Riss kann über Async-Funktionen zur/fast gleichzeitig gestartet werden
wir sollten wahrscheinlich auch negative Werte unterstützen

Im Gegensatz zu UNIX-Runleveln, für die es eine Art natürliche Reihenfolge gibt, scheint die Ausführungsreihenfolge für Skripte willkürlicher zu sein. Ich denke, es sollte am Benutzer liegen. Eine Standardpriorität, die von einem Tag im Skript stammt, ist keine schlechte Idee, aber es muss eine Möglichkeit zum Überschreiben der Reihenfolge geben, wie dies in früheren Versionen von GM der Fall war.

Ich stimme dem zu, aber wir könnten bei Bedarf den Runlevel/die Priorität von Skripten aus der Quelle bearbeiten; Ich gehe davon aus, dass das einfacher zu implementieren wäre, dann könnte eine Benutzeroberfläche darum herum gebaut werden

Stimmen Sie auch dafür ab. Einige meiner Skripte müssen in einer bestimmten Reihenfolge ausgeführt werden und brechen ab, wenn sie nicht zu ihrer Zeit ausgeführt werden.
Ich denke auch, dass dies dem Benutzer überlassen bleiben sollte, diese Reihenfolge zu bestimmen. Die Benutzeroberfläche kann auf eine Art "order"/"runlevel"-Direktive aus dem Skript verweisen, aber das letzte Wort muss das des Benutzers sein. Ich kann mir sogar zwei Skripte vorstellen, die sich absichtlich anders verhalten, wenn sie 1.-2. oder 2.-1. ausgeführt werden, da sich beide auf das DOM der Seite beziehen, das von ihnen geändert wird.

Ein Runlevel ist IMHO nicht das, was wir hier brauchen.
Ich denke, in den meisten Fällen geht es nur darum, Skript A vor Skript B auszuführen.
Dies ist eine (relative) Einschränkung. Runlevel ist ein absolutes Maß. Nicht ausreichend.
Außerdem ist die Einschränkung recht spärlich. Alles was Sie brauchen ist das "früher" / "später" Ding,
und vielleicht, nur zum Trost, "erster"/"letzter"...

Dies ist (eigentlich) keine Eigenschaft des Skripts selbst, daher sollte es kein Header @tag , der in den Quellcode eingebrannt wird. Dies ist ein Symptom für eine Kombination von Skripten, bei denen die Änderungen des einen die anderen unterbrechen (aber nicht umgekehrt), sodass der andere zuerst ausgeführt werden muss.

Wird es diese Funktion eines Tages noch geben? Ich vermisse es seit dem Erscheinen von 4.x und musste einige schlechte Umgehungen in meinen Skripten vornehmen, um vorerst in der richtigen Reihenfolge ausgeführt zu werden.

... einige schlechte Problemumgehungen ...

Was war die Problemumgehung und warum war sie schlecht?

Ich erinnere mich, dass ich mit einem Skript ein unsichtbares Div erstellt und im anderen einen Timer gesetzt habe, der überprüfen sollte, ob das Div schon existiert. Oder war das dumm?

Ich glaube nicht, dass man mit Greasemonkey globale Variablen setzen und für andere Skripte zugänglich machen kann? Und selbst das würde das Einstellen eines Timers erfordern, oder?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen