Esegui script Greasemonkey sulla stessa pagina, più volte?

Sono totalmente nuovo a Greasemonkey, javascript, in effetti tutta la roba dell’interfaccia utente.

Requisito: Userscript viene eseguito da GS una volta caricata la pagina. Tuttavia, ho bisogno che lo stesso script venga eseguito più volte senza aggiornamento

Caso d’uso: ad esempio, la ricerca di Amazon.com avviene con Ajax. Ho bisogno di incorporare un elemento personalizzato nei risultati di ricerca.

Devo inserire il mio contenuto nel risultato-ricerca-div insieme ai risultati ogni volta che una ricerca avviene nella stessa pagina (non c’è alcun aggiornamento della pagina)

Il mio script attuale viene eseguito solo con l’aggiornamento della pagina.

Spero che la spiegazione sopra sia chiara. Per favore aiuto.

Il modo più semplice e più efficace consiste nell’utilizzare l’utilità waitForKeyElements () .

Ecco uno script completo che utilizza jQuery e waitForKeyElements per modificare i risultati di ricerca di 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);

È ansible utilizzare l’evento DOMNodeInserted per richiamare la richiamata, ad esempio:

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

Tieni presente che l’evento verrà triggersto da qualsiasi modifica nella struttura della pagina, quindi dovrai verificare di avere come target il cambiamento corretto.