一个人浏览了我的网页N页后,我想提出一个弹出窗口,询问他们是否愿意订阅我的简报。
我发现示例代码在延迟几秒钟后弹出一个弹出窗口,我发现样本只询问一次,但没有一个可以跟踪遍历的页数。
在遍历了一定数量的页面后,我在哪里可以找到示例JS代码来引发窗口?
我的简单分析是,通常每次在N页上调用脚本都是一个不同的调用,因此不会有任何前一页调用的记录。因此,每个副本都必须读取前一个副本设置的cookie,增加它并存储回来。然后,当N = 3且我认为合适的任何其他条件都满足时,弹出即被触发。
答案 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);