Execute o script Greasemonkey na mesma página, várias vezes?

Eu sou totalmente novo para Greasemonkey, javascript, na verdade, todas as coisas da interface do usuário.

Requisito: O Userscript é executado pelo GS uma vez após o carregamento da página. No entanto, preciso que o mesmo script seja executado várias vezes sem atualizar

Caso de uso: Por exemplo, a pesquisa na Amazon.com acontece usando o Ajax. Eu preciso incorporar um elemento personalizado nos resultados da pesquisa.

Preciso injetar meu conteúdo no resultado da pesquisa-div juntamente com os resultados toda vez que uma pesquisa acontece na mesma página (não há atualização de página)

Meu script atual é executado apenas com a atualização da página.

Espero que a explicação acima seja clara. Por favor ajude.

   

A maneira mais simples e robusta é usar o utilitário waitForKeyElements () .

Aqui está um script completo que usa jQuery e waitForKeyElements para alterar os resultados da pesquisa da Amazon:

 // ==UserScript== // @name _Amazon Search, alter results // @include http://www.amazon.com/s/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js // @require https://gist.github.com/raw/2625891/waitForKeyElements.js // @grant GM_addStyle // ==/UserScript== /*- The @grant directive is needed to work around a design change introduced in GM 1.0. It restores the sandbox. */ function addCustomSearchResult (jNode) { //***** YOUR CODE HERE ***** jNode.prepend ( '
Buy my stuff, instead!
' ); } waitForKeyElements ("#atfResults", addCustomSearchResult);

Você pode usar o evento DOMNodeInserted para chamar seu retorno de chamada, por exemplo:

 document.addEventListener('DOMNodeInserted', function() { alert('hi') }, false); 

Tenha em atenção que o evento será acionado por qualquer alteração na estrutura da página, pelo que terá de verificar se está a segmentar a alteração correta.