0

在一个人浏览了我的网站 N 页后,我想弹出一个窗口,询问他们是否愿意订阅我的时事通讯。

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

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

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

4

2 回答 2

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 操作。

或者你可以只创建 3 个 cookie,我猜。无论你的整数浮动;)

于 2013-04-29T05:10:27.403 回答
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);

于 2013-04-29T05:23:51.533 回答