我为域创建了一个greasemonkey脚本,现在我该如何让它只运行一次?就像它每次访问域时一样,我不希望这样。如何让它只运行一次,然后像删除自身或使自己无效?
感谢。
答案 0 :(得分:5)
如果您希望脚本(或脚本的一部分)仅运行一次,则需要在非易失性存储中存储标志。脚本无法删除自身或自行关闭。但它可以立即退出,而不是运行任何其他代码。
要在逐个站点(域)的基础上存储内容,请使用localStorage。要以脚本+名称空间为基础存储内容,请使用GM_setValue。这是一个基本脚本:
// ==UserScript==
// @name _Run a GM script one-time only
// @namespace _pc
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
var alreadyRun = GM_getValue ("alreadyRun", false);
if ( ! alreadyRun) {
GM_setValue ("alreadyRun", true);
alert ("This part of the script will run exactly once per install.");
}
答案 1 :(得分:1)
将函数重新定义为正文中的最后一个语句:
function foo()
{
...
foo = function(){};
}