Como faço para executar uma função JavaScript páginas definido a partir de uma extensão do Firefox?
-
02-07-2019 - |
Pergunta
Estou criando uma extensão do Firefox para demonstração fins. I para chamar uma função JavaScript específica no documento da extensão. Eu escrevi isso no meu documento HTML (extensão não dentro, mas uma página que é carregado pelo Firefox):
document.funcToBeCalled = function() {
// function body
};
Em seguida, a extensão irá executar isso em algum evento:
var document = Application.activeWindow.activeTab.document;
document.funcToBeCalled();
No entanto, gera um erro dizendo que funcToBeCalled
não está definido.
Nota: eu poderia ter um elemento no documento chamando document.getElementById(id);
Solução
É por razões de segurança que você tem acesso limitado à página de conteúdo de extensão. Consulte XPCNativeWrapper e com segurança o acesso DOM conteúdo de cromo ,
Se você controla a página, a melhor maneira de fazer isso é configurar um ouvinte de evento na página e enviar um evento de sua extensão (addEventListener na página, dispatchEvent na extensão).
Caso contrário, consulte http://groups.google.com/group /mozilla.dev.extensions/msg/bdf1de5fb305d365
Outras dicas
document.wrappedJSObject.funcToBeCalled();
Esta é não é segura e permite que uma página maliciosa para elevar suas permissões para aqueles de sua extensão ... Mas, ele faz o que você pediu. Leia-se sobre o início de greasemonkey vulnerabilidades para por que isso é uma má idéia.
Eu tenho uma maneira muito mais simples de fazê-lo. Suponha que você tem que chamar xyz () função que está escrito na página. e você tem que chamá-lo de seu pluggin.
criar um botão ( "torná-lo invisível. Por isso não vai perturbar a sua página"). em onclick dessa chamada botão desta função xyz ().
<input type="button" id="testbutton" onclick="xyz()" />
Agora, em pluggin você tem um objeto de documento para a página. suponha que sua mainDoc
onde você quer xyz call (), basta executar esta linha
mainDoc.getElementById('testbutton').click();
ele irá chamar a função xyz ().
boa sorte:)
Você pode fazê-lo, mas você precisa ter controle sobre a página e ser capaz de elevar o nível de privilégio para o script. Documentação Mozilla dá um exemplo -. pesquisa "Privilege" na página