2010-05-26 65 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只有在整个函数执行正确时才会成立。