尝试每个用户会话只显示一次弹出窗口(我们的餐厅将因私人活动而关闭)... 当用户点击我们网站上的另一个页面时,弹出窗口将再次弹出...我不喜欢这样......所以我这样做了:
<script type="text/javascript">
if (document.cookie.indexOf("naniCOOKIE=") == -1) {
var now = new Date();
document.cookie = "naniCOOKIE=yes";
function Landing() {
$lb.launch({
url: "special_notice.php",
options: "width:570px height:110px",
title: " ",
description: ""
});
}
}
</script>
它适用于所有电脑的Mac等......只是不在移动设备上!它会一直弹出......我不想要那个......我做错了什么?
答案 0 :(得分:0)
仅当cookie不存在时才定义着陆功能不是一个很好的解决方案,因为(如果按预期工作)当页面在未定义时尝试调用Landing函数时会发生错误。
此外,这是一个糟糕的策略,因为Javascript(ES5)不支持它,并且由于非标准行为,它仅在某些浏览器中工作。函数声明不应该像if-block那样在非功能块中。某些浏览器(例如您尝试过的移动设备)会将函数声明提升到if块之外。
这是解决这两个问题的好方法,因此它不依赖于非标准行为,也不会使Landing未定义。不要只是有时定义函数,只需将条件检查移动到函数中:
function Landing() {
if (document.cookie.indexOf("naniCOOKIE=") == -1) {
var now = new Date();
document.cookie = "naniCOOKIE=yes";
$lb.launch({
url: "special_notice.php",
options: "width:570px height:110px",
title: " ",
description: ""
});
}
}