我一直在寻找不同的解决方案,但你们中的任何人都知道简单的方法 写一个多按钮,清除cookie并重定向到某个页面
我已经走到这一步了:
<script type="text/javascript">
$(document).ready(function(){
deleteAllCookies();
});
现在我有了一个链接,我只想让它刷新实际页面,清除cookie,然后重定向到另一个页面。
有没有简单的方法可以做到这一点?
答案 0 :(得分:4)
刷新后无法运行进程,您无法知道页面是如何加载的。 但是如果你想清除所有的cookie而不是重定向到另一个页面,
deleteAllCookies()函数派生自Robert J. Walker answer,
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";
});
});
答案 1 :(得分:0)
要刷新页面,只需添加:
href="javascript:location.reload(true)"
到您的锚标签。
答案 2 :(得分:0)
因为,您想要刷新整个页面,将使用您的实际DOM代码进行刷新 让我们说你的按钮看起来像:
<a href="#" id="dostuff">Click me</a>
从您的示例代码我假设您正在使用Jquery
当用户点击按钮时a)所有cookie都被清除b)新的cookie被设置,它作为“标志”以检查您的页面是否被刷新c)页面刷新d)您的代码检查“flag”如果设置,再次清除cookie并重定向。 对于我的代码,我使用a jquery plugin来轻松操作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();
});
});