2013-04-04 24 views
-2

我有這個JavaScript函數,我只需要執行一次(當滿足某些條件時),然後讓cookie記住它,而不是再運行24小時。只執行一次JavaScript函數並記住它

我想這個腳本,它使用jquery.cookie.js插件,但它不工作:

var eventsFired = ($.cookie('eventsFired') != null) 
? $.cookie('eventsFired') 
: 0; 

function load() { 

    if (eventsFired == 0){ 

    if (window.frames[0].document.getElementById('applications')) { 
     var str=document.getElementById("tst").innerHTML; 
     var n=str.replace("Login","Logout"); 
     document.getElementById("tst").innerHTML=n; 
     document.getElementById('tst').title ='logout'; 
     document.getElementById('tst').href='logout'; 
     document.getElementById('prt').href='../profile/cont.html'; 
     eventsFired++; 
     $.cookie('eventsFired', eventsFired); 
    } 
    } 
} 

的localStorage:

function load() { 
var eventsFired = localStorage.getItem('fired'); 

if (eventsFired == '1'){ 
    if (window.frames[0].document.getElementById('applications')) 
{ 
var str=document.getElementById("tst").innerHTML; 
var n=str.replace("Login","Logout"); 
document.getElementById("tst").innerHTML=n; 
document.getElementById('common').href='..css/common2.css'; 
document.getElementById('tst').title ='logout'; 
document.getElementById('tst').href='logout'; 
document.getElementById('prt').href='../profil/cont.html'; 
    localStorage.setItem('fired', '1'); 
} 
} 
} 
+0

請說明「不行」的含義。控制檯上是否有錯誤?會發生什麼(如果有的話)。你期望發生什麼事情沒有發生,等等。 – 2013-04-04 19:00:12

+0

我希望腳本只運行一次,而cookie要記住第一次執行時所做的更改,即更改父頁面上的這些元素。控制檯:TypeError:$ .cookie不是函數 [Break On This Error] \t var eventsFired =($ .cookie('eventsFired')!= null) – marius 2013-04-04 19:02:26

+1

該錯誤消息是關鍵,應該包含在你的問題。這看起來好像你沒有正確地包含cookie庫。 – 2013-04-04 19:27:50

回答

3

不要使用一個Cookie:它會每次請求都會發送到服務器。你可以用local storage代替:

function load() { 
    var eventsFired = localStorage.getItem('fired'); 

    if (eventsFired != '1'){ 
     doYourStuff(); 
     localStorage.setItem('fired', '1'); 
    } 
} 
+0

我更新了帖子,我在腳本上實現了你的代碼,但現在根本不會觸發腳本。請檢查,我做錯了什麼? – marius 2013-04-04 19:34:38

+0

對不起,有一個錯字。請重試。 – onof 2013-04-04 19:41:58

+0

仍然無效,功能現在不會觸發。也許我沒有說清楚:我的函數改變了登錄註冊,一個css文件與另一個css文件等。我需要腳本運行一次才能進行更改,在localstorage上保存該狀態(包含更改),而不是在下一次刷新腳本不會運行,但人們會在第一次運行腳本時看到所做的更改。 – marius 2013-04-04 19:55:15