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

Load Javascript only once per user / browser session

本文关键字:Javascript 一次 加载 用户 浏览器 会话      更新时间:2024-05-09

我有一个在页面加载时弹出的模态。。。

<script type="text/javascript">
jQuery(document).ready(function($) {  
  setTimeout(function() {
    $.UIkit.modal('#newsletter-20').show();
  }, 3000);
});
</script>

这一切都很好,但我需要它在每个用户/浏览器会话中只出现一次。。。由于我是一个傻瓜,即使在查看了这些信息后,我也不知道如何做到这一点>http://www.w3schools.com/js/js_cookies.asp

谢谢你的帮助!

确定用户会话是否处于活动状态需要服务器端代码。因此,使用cookie对您来说很可能是更简单的解决方案。

JSFIDDLE演示

$(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,你也可以使用它。但是jquerycookie方式要简单得多

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

当浏览器关闭时,浏览器将清除sessionStorage的内容,这意味着只有当访问者正在积极使用其浏览器时,或者直到您手动将数据更改回虚假值时,该值才会持久存在。

例如:

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