risposta

6

fa Greasemonkey inserire l'involucro nella sorgente codice JavaScript o aggiungere come qualsiasi gestore di eventi come ad esempio window.onload?

GM ascolta l'evento DOMContentLoaded (in pratica DOM Ready) here. Quindi avvolge il codice userscript e lo inserisce in una sandbox, here.

+0

grazie per indicare il codice. quando viene attivato l'evento DOMContentLoaded, il wrapper del userscript viene richiamato come gestore dell'evento o il wrapper è inserito come parte del codice sorgente? in altre parole, riga 309, this.evalInSandbox ("(function() {" + scriptSrc + "})()", url, sandbox, script), esegue il wrapper o inserisce il wrapper sul codice javascript originale? – Paul

+1

Il primo GM ascolta gli eventi DOMContentLoaded, quando quelli che si verificano GM determina quali script utente devono essere eseguiti (tramite le regole @ include/@ exclude e controllando che l'url sia 'greasemonkeyable'), quindi il codice sorgente da un userscript (che è solo un stringa a questo punto) che dovrebbe essere eseguita è racchiusa in una funzione anonima di auto-esecuzione (tramite concatenazione di stringhe), e infine esegue una evalInSandbox sulla funzione anonima di auto-esecuzione (che esegue il codice userscript). – erikvold

+0

Quindi lo script viene eseguito nel momento in cui viene iniettato. È corretto? – Paul