Как узнать, что пользователь нажал 3 раза на мой веб-сайт с помощью Javascript
-
23-08-2019 - |
Вопрос
Есть ли какой-нибудь способ в JavaScript, как узнать, что пользователь перешел через один и тот же домен 2 или более раз?
Мне нужно создать всплывающее окно после того, как пользователь нажал в любом месте сайта 3 раза.Я знаю, как это сделать одним щелчком мыши - с document.referrer
или addEventListener
, но тогда я теряюсь.
Мне нужно что-то, что будет фиксировать все события кликов (не только ссылки) и подсчитывать их.
Решение
Я попробовал это, и это сработало нормально:
window.onload = function() {
var clicked = readCookie('popunder');
if(clicked == null) {
clicked = 0;
}
var allLinks = document.getElementsByTagName("a");
for(i=0;i<=allLinks.length;i++) {
allLinks[i].addEventListener("click",countClicks,true);
}
function countClicks() {
if(clicked == 2) {
popunder(); //something to do
} else {
clicked++;
doCookie('popunder', clicked, 1);
alert(clicked);
}
}
function popunder() { alert('thats 3 clicks!'); }
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;
}
}
Другие советы
Конечно.Вам необходимо сохранить список событий кликов пользователей либо в файле cookie, либо в хранилище данных на стороне сервера.При каждом записанном клике увеличивайте количество на единицу и делайте свое дело, когда число достигнет 3.
Попробуйте использовать сеансовые файлы cookie для сохранения состояния между страницами - они быстры, довольно широко совместимы и обнуляются при завершении работы браузера, чтобы не рассыпать спам по банкам файлов cookie ваших пользователей.
Спасибо за все ваши советы.Я попробовал этот код.Но после обновления щелкнул переменная снова переходит в 0.Мне нужно сохранять каждое новое значение щелкнул в файл cookie (или что-то еще), поэтому его количество будет увеличиваться с каждым кликом по ссылке на странице.Можно ли таким образом изменить значение переменной в файле cookie?
window.onload = функция(){
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;
}