【问题标题】:show pop up only once throughout one navigation of the site在网站的一次导航中仅显示一次
【发布时间】:2023-03-08 10:56:01
【问题描述】:

我有一个使用 laravel 创建的网站。我希望用户在第一次访问我的网站时能够看到弹出窗口。

我的意思是第一次 - 用户访问我网站上的任何页面(这是第一次),访问网站上的一些链接页面(现在,这些页面访问不是第一次),同样打开 facebook标签(因此离开我的网站),然后再次在同一个标​​签中打开我的网站(这是第一次)。

一次弹出背后的基本原因是不要在用户浏览网站时一次又一次地打扰他。但是,一旦他离开并再次回来,我想将其视为新访问(并再次显示弹出窗口)。

我知道我可以在jQuery 中使用setTimeout() 做弹出式操作。但是如何只做一次呢?请注意,弹出窗口可以出现在任何页面上(如果是当前访问的第一页),而不仅仅是主页上。

【问题讨论】:

    标签: javascript jquery web laravel popup


    【解决方案1】:

    您可以使用 document.referrer,并检查上一页是否属于您的域。但出于安全原因,并非所有访问者/浏览器都会返回此值。

    所以这是不可靠的。

    【讨论】:

      【解决方案2】:

      使用像jQuery Cookie 这样的插件,然后简单地做:

      if(!$.cookie("popup"))
      {
       your_popup_function();
       $.cookie("popup",true);
      }
      

      编辑:由于您编辑了有关“首次访问”定义的问题,因此我建议使用 Walter Brand 建议的方法,使用推荐人。取自this post

      document.referrer.indexOf(location.protocol + "//" + location.host) === 0;
      

      【讨论】:

      • 我想使用 cookie 的问题是当您导航到另一个站点然后返回同一个选项卡时会话 cookie 仍然可用。
      【解决方案3】:

      不使用插件的解决方案:

      var adCookie = document.cookie.indexOf('ad_displayed')
      
      if (adCookie != -1) {
         your_popup_function();
         document.cookie = "ad_displayed=1";
      }
      

      就是这样,当然你可以在cookie上设置有效期。阅读更多here

      【讨论】:

      • 您无法知道访问者何时离开您的网站,然后又带着 cookie 回到同一个标签页。所以在这种情况下,这个答案没有用。
      • 如果您想要最大的性能和最小的代码大小,最好使用这个 cookie 解决方案。
      【解决方案4】:

      您好,我在解决客户要求“在导航到网站的不同页面时只显示一次弹出窗口”时做了这个解决方案,它对我很有用。 我使用 cookie 并将 cookie 值设置为 cookie 创建时间,而不是使用 javascript setInterval 函数将 cookie 值与当前时间进行比较,并将差异与我想要显示弹出窗口的时间进行比较,它是工作。

      $(document).ready(function() 
      {
      var myVar=""; 
      
       function getCookie(name)
      {
      var re = new RegExp(name + "=([^;]+)");
      var value = re.exec(document.cookie);
      return (value != null) ? unescape(value[1]) : null;
      }
      
      function callagain()
                { 
                  if(!getCookie("magazine"))
                   {
                    var c1= new Date();
                    var c2=c1.getTime();
                    document.cookie="magazine="+c2;
                    }   
                  var cvalue= getCookie("magazine");
                  var cvalue2=parseInt(cvalue);
                  myVar=setInterval(function(){ call22(cvalue2);},1000);     
             }
      
      function call22(abcd)
      {
      var curdate = new Date();
      var curtime = curdate.getTime();
      var curtime2=parseInt(curtime);
      var result=curtime2 - abcd;
      if( (result >30000) && (result < 31000) )
                   {
                     alert(“POP UP  ONCE THROUGHOUT THE SITE”);
                      clearInterval(myVar);
                   }
      }
      callagain();                 
      });
      

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-25
        • 2013-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多