如何只运行一次Greasemonkey脚本

时间:2013-03-06 14:18:01

标签: greasemonkey

我为域创建了一个greasemonkey脚本,现在我该如何让它只运行一次?就像它每次访问域时一样,我不希望这样。如何让它只运行一次,然后像删除自身或使自己无效?

感谢。

2 个答案:

答案 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(){};
 }