如果您使用@include *
创建Greasemonkey脚本并转到诸如youtube之类的站点,则每次刷新时都会运行脚本20次以上。这是在Firefox上,不知道关于Chrome。
有没有办法来防止这种情况?每页加载只运行一次Greasemonkey脚本?
21
A
回答
35
首先,您可能不希望脚本在iFrame中运行。
您可以阻止使用the @noframes
directive现在工作在两个的Greasemonkey和Tampermonkey截至10月,2014年
对于旧版本,或脚本引擎不支持@noframes
,您可以使用此代码,刚过元数据块:
if (window.top != window.self) //don't run on frames or iframes
{
//Optional: GM_log ('In frame');
return;
}
其次,你可以等待,解雇你的GM码,有一次,在页面加载。在main()
总结一切,并调用它的load
事件,像这样:
window.addEventListener ("load", LocalMain, false);
function LocalMain() {
// Your code goes here.
}
第三,你可以通过添加// @exclude
指令的元数据块排除网站或网页。
总体而言,如果可能的话,最好避免使用通用的GM脚本。
其他方法可能会设置标志或使用URL参数重新加载页面。这些变得棘手,因此将它们保存为最后的手段。
0
例如,您可以将给定的位置存储在持久变量中。 在页面加载时,如果当前位置已存储在此变量中,您必须检查。
如果没有,则设置该变量并运行您的函数,如果是,则不执行任何操作。
如何存储持久性变量:GM_setValue
相关问题
- 1. 如何只运行一次Greasemonkey脚本
- 2. 的Greasemonkey脚本闪光一次,每次载入网页
- 3. 脚本只运行一次
- 4. 在同一页面上多次运行Greasemonkey脚本?
- 5. Greasemonkey脚本仅在页面重新加载时运行
- 6. Greasemonkey脚本只能用CTRL + F5加载?
- 7. 如何制作一个每页加载运行一次的SSL转发脚本
- 8. 脚本加载的Ajax查询只运行一次
- 9. 变量加1,每次运行脚本
- 10. 在第一次运行Greasemonkey脚本时执行函数
- 11. 每10秒运行一次node.js脚本
- 12. 每分钟运行一次PHP脚本
- 13. Javascript每300秒运行一次脚本
- 14. $ .ajax只运行一次脚本
- 15. Javascript appendChild(脚本)只能运行一次
- 16. 我的脚本只运行一次
- 17. 运行脚本牵强只有一次
- 18. jQuery脚本只能运行一次
- 19. 谷歌脚本:使脚本每分钟运行一次,但每天只运行一小时
- 20. 如何让PHP脚本每天只运行一次?
- 21. 脚本多次运行时,它应该只运行一次
- 22. 避免每次脚本运行时加载数据库
- 23. 如何在每次加载新页面时执行脚本?
- 24. 在每个页面加载运行我的脚本,*包括* AJAX页面加载?
- 25. 每次使用Google Extensions加载页面时都要运行内容脚本?
- 26. 加载页面后运行php脚本
- 27. 在页面加载时运行脚本
- 28. 在页面加载运行角脚本
- 29. 为什么我的函数只在每页加载时运行一次?
- 30. jquery每次只运行一次
只是检查YouTube上,有少得多的I帧。我的建议是'GM_log(location.href)'和狭窄的@include。 – 2010-11-16 02:17:42
这解决了我的问题。谢谢! – Joren 2010-11-16 02:33:23
@Joren:不客气。乐意效劳。 – 2010-11-16 02:41:12