Ho letto "Dive into Greasemonkey" (per Mark Pilgrim) scritto nel 2005. Si accenna che Greasemonkey include uno script utente in un wrapper di funzione anonimo. Greasemonkey inserisce il wrapper nel codice JavaScript sorgente o lo aggiunge come gestore di eventi come window.onload
?JavaScript: come funziona Greasemonkey
7
A
risposta
6
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
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
Quindi lo script viene eseguito nel momento in cui viene iniettato. È corretto? – Paul