我在用户点击弹出通知时使用JavaScript设置cookie但在完全关闭浏览器后,cookie过期并在导航到页面时再次显示通知。
我希望用户可以选择基本上说“不再显示”。
1)有没有更好的方法来保存数据到数据库?
2)我可以设置cookie,以便在窗口关闭时它不会过期吗?
以下是设置Cookie的代码。如果cookie未设置为“已访问”,则会将另一个函数调用showLightBox()
。
$j(document).ready(function() {
$j(function() {
checkCookie();
});
function checkCookie() {
var hasVisit = getCookie("hasVisited");
if(hasVisit != "visited") {
showLightBox();
}
}
function getCookie(c_name) {
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1)
c_start = c_value.indexOf(c_name + "=");
if (c_start == -1)
c_value = null;
else
{
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1)
c_end = c_value.length;
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
function setCookie(cookieName, value) {
document.cookie = cookieName + "=" + value;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以设置Cookie过期的日期。
document.cookie="username=suman; expires=Thu, 18 Dec 2020 11:00:00 GMT";
现在这个cookie将于2020年12月18日被删除。默认情况下,当您的浏览器关闭时,cookie将被删除。
<强>更新: - 强> 在您的情况下,cookie将设置它将过期的日期。
function setCookie(cookieName,value){
document.cookie = cookieName+"="+value+"; expires=Thu, 18 Dec 2020 11:00:00 GMT";
}
您可以在日期字段中输入您想要的任何日期。
答案 2 :(得分:0)
您可能没有为Cookie设置过期,因此默认为会话cookie在浏览器关闭时到期。
如果你已经在使用jQuery,我建议使用精彩的jQuery Cookie plugin,这使得设置和检索cookie成为一块蛋糕。有关详细信息,请参阅自述文件/文档,只需编写几行代码而不是50行。
答案 3 :(得分:0)
为什么不在html5中使用localStorage来实现这一点,因为它是持久的, 就像用户第一次点击链接时设置标志
localStorage.setItem('clicked', "yes");
然后再次检查是否设置了此值
if(localStorage.getItem('clicked')!=null){
//clicked
}
else
{
//not clicked
}
如果设置了此值,则显示“不要再显示”,否则不要......