我有一个页面,当点击链接时会创建一个cookie,因为cookie是使用从onclick
事件调用的javascript函数创建的。我总是在页面上有另一个按钮,当点击检查天气时,cookie存在并且我遇到的问题是当我点击cookie创建者按钮时,cookie似乎总是存在。以下是我的功能
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
checkCookies();
}
function getCookie(cname)
{
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++)
{
var c = ca[i].trim();
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
}
function checkCookies() {
var cookie = getCookie("addon2");
if (!cookie) {
window.location.replace("http://google.com");
} else {
window.location.replace("http://stackoverflow.com");
}
}
我的两个按钮如下;
<a href="#" onclick='checkCookies();'>
<a href="#" onclick="createCookie('addon2', 'yes', 0);">
为什么每次单击第一个链接而不创建cookie时,我都会被重定向到堆栈溢出?
感谢您的帮助
答案 0 :(得分:1)
为什么每次点击时都会被重定向到堆栈溢出 第一个链接没有创建cookie?
您正在重定向,因为Cookie已在浏览器中保留
点击第二个链接会创建一个没有过期的cookie。
因为您在致电days=0
时设置了createCookie('addon2', 'yes', 0)
它导致始终调用else var expires = "";
。
要真正了解发生了什么。在Chrome中点击F12->资源然后选择Cookie。在这里,您将能够看到cookie的设置时间(并且看到它永不过期)。您也可以通过右键单击 - >删除
手动删除Cookie如果您想让Cookie更快过期,以便您可以在几秒钟内看到效果,请尝试使用此变体。
function createCookie(name,value,seconds) { //<----Change days to seconds
if (seconds) {//<----Change days to seconds
var date = new Date();
date.setTime(date.getTime()+(seconds*1000));//<----- change days to seconds and *24*60*60*1000 to just *1000
var expires = "; expires="+date.toGMTString();
}
然后使用您的链接
<a href="#" onclick="createCookie('addon2', 'yes', 10);">Link</a> <!-- I set 10 seconds (Set whatever interval you like)
或
您可以添加此功能
function del_cookie(name)
{
var date = new Date();
date.setTime(date.getTime()+(-1));
var expires = "; expires="+date.toGMTString();
document.cookie = name+"=;"+expires+"; path=/";
}
此链接
<a href="#" onclick="del_cookie('addon2');">Delete Cookie</a>
因此,您可以通过VtoCorleone建议的链接使cookie过期
答案 1 :(得分:0)
您关闭浏览器然后重新打开它吗?如果您只是关闭选项卡,然后打开另一个选项卡,cookie可能会持续存在并仍然存在。
添加第3个按钮,通过将cookie设置为过去(昨天)的某个时间来完全删除cookie。这将确保完全删除cookie。然后再次尝试点击“checkCookies”链接,您应该被定向到google。