2013-03-06 92 views
4

我爲一個域做了一個greasemonkey腳本,現在如何讓它只運行一次?就像每次訪問域時開始的那樣,我不希望這樣。如何讓它只運行一次,然後像刪除它自己或使其本身不活動?如何只運行一次Greasemonkey腳本

謝謝。

+1

它的氣味有害 – w35l3y 2013-03-06 16:28:54

+0

我希望我的訪問者重定向到一個歡迎頁面僅在第一次訪問解釋他的條件和隱私政策條款。我不希望他們在每次訪問時都訪問該頁面。 :) – C0dez 2013-03-07 04:10:53

+2

所以你是頁面的維護者。不需要使用Greasemonkey。 他們是否登錄用戶?將它添加到登錄頁面。 不是嗎?不能準確,但可以使用cookies並將過期日期延遲至幾年後 – w35l3y 2013-03-07 15:50:08

回答

1

重新定義功能在體內的最後一條語句:

function foo() 
{ 
... 
foo = function(){}; 
} 
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."); 
}