想要两次使用相同的Javascript(弹出)会话cookie,我会更改哪些值?

时间:2013-05-22 15:27:18

标签: javascript cookies popup session-cookies

我有一个.swf,我们在主页上每次访问时弹出一次,然后消失。为此,我使用

 <script type="text/javascript">


        function popUp(url) { a bunch of java add flash stuff}

function testCookie() {
    if (document.cookie.indexOf("popupOnceValue=false") > -1) {
        document.cookie = "popupOnceValue=true;";
        return true;
    } else {
        return false;
    }
}
function popupOnce() {
    if (document.cookie.indexOf("popupOnceValue") > -1) {
        if (testCookie()) {
            popUp("");
        } 
    } else {
        document.cookie = "popupOnceValue=false;";
        if (testCookie()) {
            popUp("wefinance2.swf");
        }
    }
}

function init() {
    popupOnce();
}

window.onload = init;       



                    </script>   

这很棒。但是我确实尝试过每一个变量组合,以便我可以在另一个页面上执行完全相同类型的弹出...但是因为cookie已经被识别,所以它不会弹出(即使它是一个不同的.swf)所以基本上我问我应该改变什么才能能够使用相同的弹出代码两次(popUP,testCookie,popupOnce)? AGH!

让自己疯狂!

1 个答案:

答案 0 :(得分:0)

您需要将Cookie名称保持为页面URL的唯一名称。您可以通过对每个页面的cookie名称进行硬编码或自动生成cookie名称来完成此操作。后者如下图所示。

// Generate a cookie name based on the current URL.
function getCookieName() {
    return 'popup_' + encodeURIComponent(window.location.href);
}

function testCookie() {
    // Find the cookie name for the current page.
    var cookieName = getCookieName();
    if (document.cookie.indexOf(cookieName) > -1) {
        document.cookie = cookieName + "=true;";
        return true;
    } else {
        return false;
    }
}

function popupOnce() {
    // Find the cookie name for the current page.
    var cookieName = getCookieName();
    if (document.cookie.indexOf(cookieName) > -1) {
        if (testCookie()) {
            popUp("");
        } 
    } else {
        document.cookie = cookieName + "=false;";
        if (testCookie()) {
            popUp("wefinance2.swf");
        }
    }
}