habilitar - ¿Cómo ejecuto una función de JavaScript definida por la página desde una extensión de Firefox?
desactivar javascript firefox (4)
Es por razones de seguridad que tiene acceso limitado a la página de contenido desde la extensión. Ver XPCNativeWrapper y acceder de forma segura al contenido DOM desde Chrome ,
Si controla la página, la mejor manera de hacerlo es configurar un detector de eventos en la página y enviar un evento desde su extensión (addEventListener en la página, dispatchEvent en la extensión).
De lo contrario, consulte http://groups.google.com/group/mozilla.dev.extensions/msg/bdf1de5fb305d365
Estoy creando una extensión de Firefox para propósitos de demostración. I para llamar a una función específica de JavaScript en el documento de la extensión. Lo escribí en mi documento HTML (no dentro de la extensión, sino en una página cargada por Firefox):
document.funcToBeCalled = function() {
// function body
};
Entonces, la extensión ejecutará esto en algún evento:
var document = Application.activeWindow.activeTab.document;
document.funcToBeCalled();
Sin embargo, genera un error que dice que funcToBeCalled
no está definido.
Nota: podría obtener un elemento en el documento llamando a document.getElementById(id);
Puede hacerlo, pero necesita tener control sobre la página y poder elevar el nivel de privilegio para la secuencia de comandos. La documentación de Mozilla da un ejemplo : busque "Privilegio" en la página.
Tengo una forma muy simple de hacerlo. Supongamos que tiene que llamar a la función xyz () que está escrita en la página. y debes llamarlo desde tu complemento.
crea un botón ("hazlo invisible, para que no moleste tu página"). al hacer clic en ese botón, llama a esta función xyz ().
<input type="button" id="testbutton" onclick="xyz()" />
ahora en pluggin tienes un objeto de documento para la página. supongamos que su principalDoc
donde quieras llamar a xyz (), simplemente ejecuta esta línea
mainDoc.getElementById(''testbutton'').click();
llamará a la función xyz ().
buena suerte :)
document.wrappedJSObject.funcToBeCalled();
Esto no es seguro y permite que una página maliciosa eleve sus permisos a los de su extensión ... Pero hace lo que usted solicitó. Lea sobre las vulnerabilidades de greasemonkey de por qué esta es una mala idea.