在同一页面上多次运行Greasemonkey脚本?

我完全是Greasemonkey的新手,实际上所有的UI都是JavaScript。

要求:在加载页面后,用户脚本由GS运行一次。 但是,我需要相同的脚本多次运行而不刷新

使用案例:例如,Amazon.comsearch使用Ajax进行。 我需要在search结果中embedded一个自定义元素。

每次search发生在同一页面时,我需要将我的内容和search结果一起注入search结果(不刷新页面)

我当前的脚本只能在页面刷新的情况下运行。

我希望以上解释清楚。 请帮忙。

最简单,最可靠的方法是使用waitForKeyElements()实用程序 。

这是一个完整的脚本 ,它使用jQuery和waitForKeyElements来更改Amazonsearch结果:

 // ==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 ( '<div id="result_000" class="fstRow">Buy my stuff, instead!</div>' ); } waitForKeyElements ("#atfResults", addCustomSearchResult); 

您可以使用DOMNodeInserted事件来调用您的callback,例如:

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

请注意,该事件将由页面结构中的任何更改触发,因此您必须检查您是否正确定位了正确的更改。