每个用户/浏览器会话只加载一次Javascript

时间:2016-04-12 14:17:50

标签: javascript jquery cookies modal-dialog

我有一个弹出页面加载的模态...

<script type="text/javascript">

jQuery(document).ready(function($) {  
  setTimeout(function() {
    $.UIkit.modal('#newsletter-20').show();
  }, 3000);
});

</script>

这一切都很好,但我需要它每个用户/浏览器会话只出现一次...因为我是菜鸟我不知道如何在查看此信息后实现这一点&gt; http://www.w3schools.com/js/js_cookies.asp

请求帮助!

2 个答案:

答案 0 :(得分:0)

你有没有看过sessionStorage?使用sessionStorage,您可以在每个会话本地存储一个简单的布尔标志,然后在显示模态对话框之前测试该标志是否存在。

当浏览器关闭时,浏览器将清除sessionStorage的内容,这意味着只有访问者正在使用他们的浏览器,或者直到您手动将数据更改为假,才会保留该值值。

例如:

jQuery(document).ready(function($) {  

    setTimeout(function() {

        if (!sessionStorage.previouslyVisited) {
            $.UIkit.modal('#newsletter-20').show();
            sessionStorage.previouslyVisited = true;
        }
    }

});

答案 1 :(得分:0)

确定您的用户会话是否处于活动状态需要服务器端代码。因此,使用cookie很可能是更容易解决的问题。

JSFIDDLE DEMO

$(document).ready(function() {
  var cookieValue = $.cookie("user-session");

  if (!cookieValue || !cookieValue.length) {
    setTimeout(function() {
      $.UIkit.modal('#newsletter-20').show();
      $.cookie("user-session", "1");
    }, 3000);
  }
});

注意 :要让$ .cookie工作,你必须使用jQuery cookie插件。 cdn链接就是这个 - https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js

但这是可选的,如果你想要一个传统的javascript获取和设置cookie的方式,你也可以使用它。但是jquery cookie的方式更简单。