在同一页面上多次运行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);
请注意,该事件将由页面结构中的任何更改触发,因此您必须检查您是否正确定位了正确的更改。
- 如何使用jquery链接ajax调用
- 更新页面上的数据而不刷新
- 有可能通过一些debugging器,如WebKit,FireBug或IE8开发工具debuggingdynamic加载JavaScript?
- 播放2.x:如何使用通用button进行AJAX请求
- 通过AJAX请求重新绘制基于用户input的谷歌图表
- event.returnValue已被弃用。 请改用标准的event.preventDefault()
- HTTP状态码0 – 这对于读取或XMLHttpRequest有什么意义?
- Chrome中的AJAX发送OPTIONS而不是GET / POST / PUT / DELETE?
- MVC以JSONforms返回部分视图