2015-09-22 92 views
2

我使用此代碼僅在每個會話中向用戶顯示彈出窗口。它可以工作,但只會在特定網址上顯示一次。jQuery cookie彈出窗口僅在每個會話中僅顯示一次

例如,如果用戶訪問www.mydomain.com/some-url-1,它只會在該網址上顯示一次,但如果用戶訪問其他網址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> 

有誰知道需要進行修改,以顯示彈出只能隔着全域及其子域一次呢?

+0

http://stackoverflow.com/questions/2619087/how-do-you-set-a-cookie-to-be-accessible -across最整個域-在JavaScript的 – epascarello

回答

0

如果您支持的瀏覽器列表允許,最好使用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> 
相關問題