Como faço para executar uma função JavaScript páginas definido a partir de uma extensão do Firefox?

StackOverflow https://stackoverflow.com/questions/151555

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);

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top