簡體   English   中英

jQuery cookie彈出窗口在每個會話中僅顯示一次

[英]jQuery cookie pop-up to show only once per session

我使用此代碼在每個會話中僅向用戶顯示一次彈出窗口。 它可以工作,但只會在特定的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>

有誰知道需要修改什么才能在整個域及其子域中僅顯示一次彈出窗口?

如果支持的瀏覽器列表允許,則最好使用Web存儲來跟蹤用戶在整個會話中是否看到了彈出窗口。

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

sessionStorage允許您存儲一個值,以表示用戶已看到彈出窗口。 此存儲已沙箱化到您的域,並在會話結束時清除。

您的代碼段需要修改為以下內容:

<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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM