【问题标题】:jQuery cookie pop-up to show only once per sessionjQuery cookie 弹出窗口每个会话仅显示一次
【发布时间】:2019-02-01 06:54:33
【问题描述】:

我使用此代码在每个会话中仅向用户显示一次弹出窗口。它可以工作,但只会在特定的 URL 上显示一次。例如,如果用户访问www.mydomain.com/some-url-1,它将仅在该 URL 上显示一次,但如果用户访问不同的 URL www.mydomain.com/some-different-url,则弹出窗口将再次显示。

我希望它只显示一次整个域

代码如下:

<div id="trex-widget391" class="trex-popup-widget"></div> 
   <script>
       function trexCallback391(trex){document.getElementById("trex-widget391").innerHTML=trex.html;}
       jQuery(".trex-popup-widget").mouseover(function(e){
           if(document.cookie.indexOf("popup_trex") ===-1) {
               jQuery("#trex_overlay_fsl_popup").fadeIn('slow');
               expiry = new Date();expiry.setTime(expiry.getTime()+(10*60*1440000)); 
               document.cookie = "popup_trex=yes; expires=" + expiry.toGMTString();
           }
       });
   </script> 
   <script src="http://clanci.geek.hr/widget/widget.php?id=391" async defer></script>

有谁知道需要修改哪些内容才能在整个域及其子域中只显示一次弹出窗口?

【问题讨论】:

标签: javascript php jquery cookies popup


【解决方案1】:

如果您支持的浏览器列表允许,最好使用网络存储来跟踪您的用户是否在整个会话中看到了弹出窗口。

https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

sessionStorage 将允许您存储一个值以表示用户已看到弹出窗口。此存储已被沙盒化到您的域中,并在会话结束时被清除。

您的 sn-p 需要修改为:

<div id="trex-widget391" class="trex-popup-widget"></div> 
   <script>
       function trexCallback391(trex){document.getElementById("trex-widget391").innerHTML=trex.html;}
       jQuery(".trex-popup-widget").mouseover(function(e){
           if(!sessionStorage.seenPopup) {
               jQuery("#trex_overlay_fsl_popup").fadeIn('slow');
               sessionStorage.seenPopup = "yes";
           }
       });
   </script> 
   <script src="http://clanci.geek.hr/widget/widget.php?id=391" async defer></script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2019-03-27
    相关资源
    最近更新 更多