Respuesta

6

¿El Greasemonkey insertar la envoltura en la fuente de código JavaScript o añadir como cualquier controlador de eventos como window.onload?

GM escucha el evento DOMContentLoaded (básicamente DOM Ready) here. A continuación, ajusta el código de usuario e inserta eso en un recinto de seguridad, here.

+0

gracias por señalar el código. cuando se desencadena el evento DOMContentLoaded, ¿se invoca el contenedor del usuario como el controlador del evento o se inserta el contenedor como parte del código fuente? en otras palabras, la línea 309, this.evalInSandbox ("(función() {" + scriptSrc + "})()", url, sandbox, script), ejecuta el contenedor o inserta el contenedor en el código original de JavaScript? – Paul

+1

Primero GM escucha los eventos DOMContentLoaded, cuando eso sucede, GM determina qué usuarios se deben ejecutar (a través de las reglas @include/@exclusiva, y verifica que la URL sea 'greasemonkeyable'), luego el código fuente de un usuario (que es solo string en este punto) que se debe ejecutar se envuelve en una función autoejecutable anónima (a través de la concatenación de cadenas), y finalmente hace una evalInSandbox en la función autoejecutable anónima (que ejecuta el userscript). – erikvold

+0

Entonces, el script se ejecuta en el momento en que se inyecta. ¿Es correcto? – Paul

Cuestiones relacionadas