如果您使用@include *
创建Greasemonkey脚本并转到像youtube这样的网站,则每次刷新时它都会运行脚本20次以上。这是在Firefox上,不确定Chrome
有办法防止这种情况吗?
答案 0 :(得分:35)
首先,您可能不希望脚本在iFrame中运行
你可以使用the @noframes
directive阻止它,它现在可以在2014年10月的Greasemonkey和Tampermonkey中使用。
对于旧版本或不支持@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参数重新加载页面。这些变得棘手,所以将它们作为最后的手段来保存。
答案 1 :(得分:0)