사용자를 찾는 방법은 JavaScript를 사용하여 내 웹 사이트를 통해 3 번 클릭했습니다.
-
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;
}
}
다른 팁
확신하는. 사용자의 클릭 이벤트 목록을 쿠키 또는 서버 측 데이터 저장소에 저장해야합니다. 기록 된 모든 클릭에서 카운트를 하나씩 증가시키고 숫자가 3에 맞을 때 일을하십시오.
세션 쿠키를 사용하여 페이지 사이에 상태를 저장하십시오. 빠르고 널리 호환되며 브라우저가 종료되면 사용자의 쿠키 항아리를 스팸으로 유지하지 못하게됩니다.
모든 조언에 감사드립니다. 이 코드를 시도했습니다. 그러나 새로 고침 후 클릭 변수는 다시 0으로 이동합니다. 모든 새로운 가치를 저장해야합니다 클릭 쿠키 (또는 다른 것)로, 페이지의 링크를 클릭 할 때마다 그 번호가 상승합니다. 이런 식으로 쿠키에서 변수의 값을 변경할 수 있습니까?
Window.onload = function () {
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;
}
제휴하지 않습니다 StackOverflow