在流程结束时删除cookie

时间:2010-05-26 11:13:25

标签: javascript jquery function

我在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');

谢谢:)

3 个答案:

答案 0 :(得分:1)

您可以在流程结束时以及window.onUnload事件中删除cookie,以确保即使您在流程完成之前关闭窗口也会清除cookie。

答案 1 :(得分: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只有在正确执行整个函数时才会为真。

答案 2 :(得分:1)

serialEvent函数中没有调用异步或定时器延迟的回调函数,所以你可以

  • 将它放在结束括号前的函数末尾, 或
  • 将其放在serialEvent('event21:', 'payment');之后。

Javascript同步执行,因此您可以确保只在完成后才删除cookie。