在JavaScript中有什么方法可以找到用户点击同一域2次或更多次吗?
用户点击网站上任意位置3次后,我需要弹出一个窗口。 我知道如何在一次点击后使用document.referrer或addEventListener,但后来我迷路了。 我需要能够捕获所有点击事件(不仅仅是链接)并计算它们的东西。
发布于 2018-08-20 13:22:13
好的您需要将用户单击事件的列表存储在cookie或服务器端数据存储中。在每一次记录的点击中,将计数增加1,并在数字达到3时执行你的操作。
尝试使用会话cookie来存储页面之间的状态-它们速度快,兼容范围广,在浏览器关闭时会自动关闭,以防止发送垃圾邮件给用户的cookie罐子。
发布于 2018-08-20 14:51:25
谢谢你的所有建议。 我试过这段代码。 但刷新后,单击的变量再次变为0。 我需要保存点击进入cookie(或其他任何内容)的每个新值,因此每次点击页面链接时它的数量都会增加。 是否可以通过这种方式更改cookie中变量的值?
var **allLinks** = document.getElementsByTagName("a");
var **clicked** = 0;
**doCookie**('popunder',clicked,1);
for(i=0;i<=allLinks.length;i++){
allLinks[i].addEventListener("click",countClicks,true);
}
function **countClicks**(){
if(clicked == 3){
popunder(); //something to do
}
else{
alert(readCookie('popunder'));
return clicked++;
}
}
function **doCookie**(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 readName = name + "=";
var cSplit = document.cookie.split(';');
for(var i=0;i < cSplit.length;i++) {
var sc = cSplit[i];
while (sc.charAt(0)==' ') sc = sc.substring(1,sc.length);
if (sc.indexOf(readName) == 0) return sc.substring(readName.length,sc.length);
}
return null;
}
https://stackoverflow.com/questions/-100000617
复制相似问题