javascript在第三页访问时提出弹出窗口

时间:2013-04-29 04:56:29

标签: javascript popup

一个人浏览了我的网页N页后,我想提出一个弹出窗口,询问他们是否愿意订阅我的简报。

我发现示例代码在延迟几秒钟后弹出一个弹出窗口,我发现样本只询问一次,但没有一个可以跟踪遍历的页数。

在遍历了一定数量的页面后,我在哪里可以找到示例JS代码来引发窗口?

我的简单分析是,通常每次在N页上调用脚本都是一个不同的调用,因此不会有任何前一页调用的记录。因此,每个副本都必须读取前一个副本设置的cookie,增加它并存储回来。然后,当N = 3且我认为合适的任何其他条件都满足时,弹出即被触发。

2 个答案:

答案 0 :(得分:1)

您的分析是正确的!你需要某种类型的cookie,无论是跟踪服务器端还是只是老式的javascript cookie。

以下是我见过如何实现它们的最佳纲要:Quirksmode Cookies

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

要更新cookie的值以跟踪页面数量 - 再次假设您没有执行此服务器端 - 您需要重置cookie并使用新值设置新的cookie。更新/更改现有cookie的值实际上并不是支持cookie的操作。

或者你可以创建3个cookie,我想。无论什么漂浮你的整数;)

答案 1 :(得分:1)

点击链接后,按下HTML5历史记录API并查看历史记录长度。您还可以向页面上的所有链接添加事件处理程序。

//first 2 paraemeters could be NULL, last is the URL
history.pushState(data, event.target.textContent, event.target.href);

//check length of history
history.length

更多关于HML5历史记录API:http://html5doctor.com/history-api/

编辑:实际上您不需要普通链接的推送事件,只需使用console.log(history.length);

进行测试