簡體   English   中英

即使用戶導航到其他頁面,也會在一段時間后彈出彈出窗口

[英]Make popup opening after a while even if the user is navigating to other page

我需要一些關於這個javascript代碼的幫助。

我有這個代碼:

jQuery(document).ready(function(){
    if (document.cookie.indexOf('visited=true') == -1) {
    var fifteenDays = 1000*60*60*24*1;
    var expires = new Date((new Date()).valueOf() + fifteenDays);
    document.cookie = "visited=true;expires=" + expires.toUTCString();
    window.setTimeout(
function() {
    jQuery.colorbox({href:"/popup.htm", open:true, iframe:false, innerWidth:600, innerHeight:490}); 
        },

30000 )}});   

它應該在30秒后打開一個彈出窗口,每天一次。 問題是彈出窗口在停留在頁面上30秒后打開。 即使客戶端導航到其他頁面,它有沒有辦法讓它在30秒后打開? 因此,如果用戶在頁面上停留15秒而在另一頁上停留15秒,則獲取彈出窗口。

先感謝您

是。

但是使用document.cookie是不可能的。

您需要使用服務器端cookie或HTML本地存儲/會話存儲。

Response.SetCookie("Visited", true) 我不知道你用什么作為后端。

沒門。 卸載頁面后,您無法執行任何其他操作。 您需要使用服務器上的其他資源(cookie,會話等)來檢查窗口是否已經顯示。

這里需要克服的根本問題是在頁面之間傳遞“狀態”。 由於您已經在示例中使用了Cookie,因此我們將使用它。 您需要設置一個會話cookie,其中包含用戶訪問該站點的時間(最初為0)。 然后,您需要每隔一段時間(可能每5秒)“輪詢”一次cookie,以更新網站計數的總時間,並將其讀回。 如果是30秒或更長時間,則觸發彈出窗口。

所以不要使用:

setTimeout(function() {
    // open alert box
}, 30000);

你會做類似的事情:

setTimeout(function() {
    // Increment 'time-on-site' cookie value by 5000
    // Then, if 'time-on-site' cookie value >= 30000, fire popup
}, 5000);

更新當然,這需要更多來回服務器,因為您需要每5秒傳遞一次更新的值。

暫無
暫無

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

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