Antwort

6

Does Grease legen Sie die Wrapper in den Source-JavaScript-Code oder es wie jedes Event-Handler window.onload wie hinzufügen?

GM hört auf DOMContentLoaded Ereignis (im Grunde DOM Ready) here. Anschließend wird der Userscript-Code umschlossen und in eine Sandbox, here, eingefügt.

+0

danke für das Zeigen auf den Code. Wenn das Ereignis DOMContentLoaded ausgelöst wird, wird der Wrapper des userscript als Handler des Ereignisses aufgerufen oder ist der Wrapper als Teil des Quellcodes eingefügt? Mit anderen Worten, Zeile 309, this.evalInSandbox ("(function() {" + scriptSrc + "})()", URL, Sandbox, Skript), führt den Wrapper aus oder fügt den Wrapper in den ursprünglichen JavaScript-Code ein? – Paul

+1

Der erste GM hört auf DOMContentLoaded Ereignisse, wenn diese passieren GM bestimmt, welche userscripts ausgeführt werden sollen (über die @ include/@ exclude Regeln, und überprüfen, dass die URL 'fettmonkeykeyable' ist), dann Quellcode von einem Userscript (welches nur ein string an dieser Stelle), die ausgeführt werden soll, wird in eine anonyme selbstausführende Funktion eingepackt (über eine String-Verkettung) und führt schließlich eine evalInSandbox auf der anonymen selbstausführenden Funktion durch (die das Benutzer-Script ausführt). – erikvold

+0

So wird das Skript zu der Zeit ausgeführt, wenn es injiziert wird. Ist es richtig? – Paul

Verwandte Themen