2010-05-26 44 views
1

我jQuery中使用以下插件餅乾:在過程結束時刪除的cookie

https://code.google.com/p/cookies/

我遇到的問題是不是與插件,但何時以及如何刪除cookie在報價過程結束時。

我使用這個網站是一個六步在線報價和購買過程。

有一些Omniture事件序列化sitestat跟蹤應用於某些頁面。這個事件序列化必須包括事件的名稱和我創建的隨機數。

我對這個我稱之爲頁面像這樣底部的通用功能:

serialEvent('event21:', 'payment'); 

下面是函數:

function serialEvent(eventNumber, eventName) { 
    var sessionID = jaaulde.utils.cookies.get('sessionID');    
    var remLength = 20 - eventName.length; 
    var remSession = sessionID.substr(sessionID.length - remLength, remLength); 
    var eventName = eventName + remSession; 
    s.events = eventNumber + eventName; 
    } 

我需要刪除的cookie的過程的結尾,感謝頁面,但我還需要'serialEvent'函數的Cookie'sessionID'。

由於函數在頁面的底部被調用,我應該直接寫cookie後刪除它嗎?這足夠強大嗎?

我需要確定該函數在cookie被刪除之前已被成功調用。

刪除cookie中的代碼非常簡單:

jaaulde.utils.cookies.del('sessionID'); 

謝謝:)

回答

1

有叫serialEvent功能沒有異步或計時器延遲迴調函數,所以你可以

  • 右括號之前把它在函數結束時, 或
  • 把它serialEvent('event21:', 'payment');後。

Javascript執行同步,所以你可以肯定的是,只有當你完成了它的cookie纔會被刪除。

1

你可以在過程結束,以及在window.onUnload事件刪除cookie,以確保即使在流程完成之前關閉窗口,cookie也會被清除。

1
function serialEvent(eventNumber, eventName) 
{ 
    var ok = false; 
    try 
    { 
     var sessionID = jaaulde.utils.cookies.get('sessionID');    
     var remLength = 20 - eventName.length; 
     var remSession = sessionID.substr(sessionID.length - remLength, remLength); 
     var eventName = eventName + remSession; 
     s.events = eventNumber + eventName; 
     ok = true; 
    } 
    catch(e) 
    { 
     // todo: error handling (what has gone wrong?) 
     ok = false; 
    } 

    return ok; 
} 

這樣你就可以知道函數調用是否正確。 ok只有在整個函數執行正確時纔會成立。