移动设备无法读取我的Cookie

时间:2016-09-02 20:24:29

标签: javascript cookies device

尝试每个用户会话只显示一次弹出窗口(我们的餐厅将因私人活动而关闭)... 当用户点击我们网站上的另一个页面时,弹出窗口将再次弹出...我不喜欢这样......所以我这样做了:

<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等......只是不在移动设备上!它会一直弹出......我不想要那个......我做错了什么?

1 个答案:

答案 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: ""
    });
  }
}