1

我一直在寻找不同的解决方案,但是你们中的任何人都知道编写一个清除 cookie 并重定向到某个页面的多个按钮的简单方法吗

我已经做到了这一点:

<script type="text/javascript">

$(document).ready(function(){
    deleteAllCookies();
});

现在我有一个链接,我只想让它刷新实际页面,清除 cookie,然后重定向到另一个页面。

有什么简单的方法可以做到这一点吗?

4

3 回答 3

7

刷新后无法运行进程,您无法知道页面是如何加载的。但是如果你想清除所有cookie而不是重定向到另一个页面,

派生自Robert J. Walker 答案的 deleteAllCookies() 函数,

function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

function clearAndRedirect(link) {
    deleteAllCookies();
    document.location = link;
}


<a href="javascript:clearAndRedirect('start.html')">Start your bacon</a>

其他方式:

如果你为你的锚标签设置了一个唯一的 id 或一个类,你也可以这样做,

<a href="#" class="startbacon">Start your bacon</a>

$(document).ready(function() {
    $(".startbacon").click(function() {
        deleteAllCookies();
        document.location = "start.html";
    });
});
于 2012-05-10T15:28:07.070 回答
0

要刷新页面,只需添加:

href="javascript:location.reload(true)"

到你的锚标签。

于 2012-05-10T15:19:58.320 回答
0

由于,您想要刷新整个页面将使用您的实际 DOM 代码进行刷新假设您的按钮如下所示:

<a href="#" id="dostuff">Click me</a>

从您的示例代码中,我假设您正在使用 Jquery

当用户单击按钮时 a) 清除所有 cookie b) 设置了一个新 cookie,它作为“标志”工作,以检查您的页面是否已刷新 c) 页面已刷新 d) 您的代码检查“ flag" 如果设置,则再次清除 cookie 并重定向。对于我的代码,我使用jquery 插件来轻松操作 cookie,我还将使用 ocanal 的函数(好东西:D)

function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

$(document).ready(function() {
    var test_flag = $.cookie('flag');
    //get cookie
    if (test_flag == "flag_is_set") {
        //if cookie is set clear all cookies once more and redirect

        deleteAllCookies();
        document.location = "myPage.html";
    }

    $("#dostuff").click(function() {
        //if button is clicked
        //clear all cookies
        deleteAllCookies();
        //set a new cookie as flag
        $.cookie('flag':'flag_is_set');
        //refresh page

        document.location.reload();
    });

});​
于 2012-05-10T15:42:24.600 回答