Cuando inyecte su secuencia de comandos de contenido, dentro del manifiesto puede indicar que el parámetro "run_at" es "document_start", los archivos se inyectan después de cualquier archivo de css, pero antes de que se construya cualquier otro DOM o cualquier otro script correr. Se puede encontrar más información en here.
{
"name": "My extension",
...
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"css": ["mystyles.css"],
"js": ["jquery.js", "myscript.js"],
"run_at": "document_start"
}
],
...
}
* Editado, agregó un ejemplo. Se podría usar uno de los tipos mutations event.
Ejemplo
manifest.json
{
"name": "Content Script test",
"version": "0.1",
"description": "Content Script test",
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["cs.js"],
"run_at": "document_start",
"all_frames": true
}
]
}
cs.js
document.addEventListener('DOMSubtreeModified', OnSubtreeModified, false);
function OnSubtreeModified(event) {
console.log('Hello from extension!');
document.removeEventListener('DOMSubtreeModified', OnSubtreeModified, false);
}
test.html (en la web en algún lugar)
<html>
<head>
<script>
alert('Hello from Web!');
</script>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
Resultados
Se hará dos alertas, en el orden:
- Hola desde web!
- Hola desde la extensión!
Esto es para una extensión. No tengo acceso al sitio web en sí y no puedo editarlo desde el servidor. Si lo hago desde el lado del cliente, para cuando lo coloque sobre la etiqueta del cuerpo, todos los guiones se habrán ejecutado para entonces. – fent