timeonsite.js 및 JS Beacons를 사용하여 웹사이트에 대한 최신 현장 방문 카운터를 구축해 보겠습니다.
기본 HTML 블록
<!--
HTML page with "counter" div container
-->
<html><head></head>
<div id="counter">
</div>
</html>
타이머 빌드를 위한 Javascript 코드 스니펫
// On page Load...
let entryTime = new Date();
//....
//User navigates the website
// some time later....
During Page exit....
let exitTime = new Date();
let timeSpent = exitTime - entryTime;
timeSpent = (timeSpent/1000); //convert to seconds
//Display the time spent with Jquery's API in page:
$(document).ready(function(){
$('#counter').html('You have spent ' + timeSpent + 'seconds.');
});
그게 다야. 사용자의 페이지 방문 시간 매개변수를 훌륭하게 측정했습니다. 그러나 사용자가 페이지를 여러 번 새로 고치거나 동일한 웹 사이트에서 N개의 브라우저 탭을 열 때 정확성, 브라우저 간 호환성 및 데이터 지속성은 어떻습니까? 사용자가 다른 쇼핑 또는 소셜 미디어 웹사이트를 방문하여 이전 웹페이지가 열린 상태로 있는 경우 어떻게 합니까?
timeSpent는 변수이므로 비활성 탭 또는 동일한 웹 사이트에 대해 동시에 열린 여러 탭과 같이 웹 페이지에서 발생하는 상태를 제어할 수 없습니다. 이 경우 timeSpent의 정확도가 손실되고 안정적으로 측정할 수 없습니다. timeonsite.js 추적기에 의해 노출되는 API를 살펴보겠습니다.
그러나 timeonsite 추적기
Tos.getTimeOnPage()
의 API는 API를 호출할 때마다 노출timeonpage data
합니다. 그리고 이 API를 사용하여 타이머 데이터로 카운터를 표시하고 업데이트할 것입니다.{
TOSId: 1129620185532,
TOSSessionKey: "14802525481391382263",
TOSUserId: "anonymous",
title: "Blog application — Nature & Wildlife",
URL: "http://tos-localdata.london/home.php"
entryTime: "2021–11–27 13:15:48.663",
exitTime: "2021–11–27 13:17:31.663",
timeOnPage: 103,
timeOnSite: 103,
timeOnPageTrackedBy: "second",
timeOnPageByDuration: "0d 00h 01m 43s",
timeOnSiteByDuration: "0d 00h 01m 43s",
trackingType: "tos",
}
1 단계
HTML 페이지 헤더에 트래커 스니펫 추가
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/timeonsite/1.2.0/timeonsitetracker.js"></script>
</head>
2 단계
트래커의 초기화 코드 추가
<script>
var config = {
// track page by seconds. Default tracking is by milliseconds
trackBy: 'seconds',
callback: function(data) { /* callback denotes your data tracking is real-time */
console.log(data);
var endPointUrl = 'http://example.com' //Replace with your actual backend API URL http://localhost/tos
if (data && data.trackingType) {
if (data.trackingType == 'tos') {
if (Tos.verifyData(data) != 'valid') {
console.log('Data abolished!');
return;
}
}
// make use of sendBeacon if this API is supported by your browser.
if (navigator && typeof navigator.sendBeacon === 'function') {
data.trasferredWith = 'sendBeacon';
var blob = new Blob([JSON.stringify(data)], {type : 'application/json'});
navigator.sendBeacon(endPointUrl, blob);
}
}
}
};
var Tos;
if (TimeOnSiteTracker) {
Tos = new TimeOnSiteTracker(config);
}
</script>
3단계
페이지에 머문 시간 데이터의 상태도 웹페이지에 표시
$(document).ready(function(){
setInterval(function () {
$('#counter').html('You have spent ' + Tos.getTimeOnPage().timeOnPage + 'seconds.');
}, 1000); // Update the counter every second for real-time experience.
});
그게 다야. 브라우저 터미널에서 트래커 각인을 확인하세요! 우리는 웹 사이트에서 사용자의 사이트 방문 시간을 정확하게 추적합니다. 보고 싶다면 a demo here 이 있습니다.
이렇게 카운터가 보입니다. 모양을 사용자 정의하십시오.
Timeonsite.js는 다음과 같은 모든 것을 처리합니다.
1, 비활성 탭
2, 페이지 새로 고침 및 다시 로드 시 데이터 지속성
3, 동일한 웹사이트의 여러 탭(일반적인 JS 날짜 개체에서는 중복되고 잘못된 사이트 방문 시간 데이터가 생성되기 때문입니다.)
4, 페이지를 닫을 때 원하는 DB 테이블에 데이터를 저장합니다. (이 데이터를 PHP/NodeJS에 저장하기 위해 이미 백엔드visual, free backend server를 사용할 수 있습니다.)
5, 가장 중요한 것은 분석 공급자가 캡처한 메트릭의 전례 없는 정확도입니다!
따라서 사용자가 사이트에서 보낸 시간을 표시할 수 있으며 DB 테이블에서 가져온 로그로 사용자가 마지막 세션에서 보낸 시간을 표시할 수도 있습니다.
2단계에서 다음 줄을 사용했습니다.
navigator.sendBeacon(endPointUrl, blob);
이것은 XMLHTTPRequest와 같은 HTTP 게시 요청을 만들기 위한 가장 강력한 Javascript API 중 하나이지만 특히 페이지를 닫는 동안 로그 데이터를 유지하고 저장하는 데 효과적입니다.
XHR/HTTP 요청과 달리 네트워크 콘솔에 핑이 표시됩니다. CORS 오류를 일으키는 샘플 빈을 사용하고 있습니다. 일반 앱에서는 성공 응답을 다시 보내야 합니다.
보너스 포인트
Timeonsite.js는
Tos.startActivity()
와 함께 Tos.endActivity()
API도 노출합니다. 이 API의 장점은 사이트의 특정 활동을 추적할 수 있고 비활성 탭, 최소화 탭 또는 여러 탭과 같은 페이지에 머문 시간 매개변수와 같은 동일한 기능과 함께 번들로 제공되어 타이밍 정확도를 측정할 수 있다는 것입니다. 각 페이지뷰에는 사이트에서 발생하는 각 활동TOSSessionKey
을 고유하게 식별하는 ActivityId(TOSId)
가 포함됩니다. 예를 들어보자면,// After initializing the TimeOnSiteTracker on page load, call startActivity() as
Tos.startActivity({applicantName: 'Nazir Khan'}); // this will start tracking the activity
// .
// .
// .
// after a while,
Tos.endActivity({applicantCountry: 'Romania'});
// calling .endActivity() will give back response
Gives response as,
{
TOSId: 585872449448,
TOSSessionKey: "14802525481391382263",
TOSUserId: "anonymous",
title: "Test application - TimeOnSiteTracker",
URL: "http://tos-localdata.london/home.php",
activityStart: "2021-11-27 13:20:46.707",
activityEnd: "2021-11-27 13:20:50.213",
timeTaken:4,
timeTakenByDuration: "0d 00h 00m 04s"
timeTakenTrackedBy: "second",
trackingType: "activity",
applicantName: "Nazir Khan",
applicantCountry: "Romania"
}
이 기사가 마음에 들면 star on github 저장소를 제공하십시오. 그리고 귀하의 웹 페이지에 대한 귀하의 사이트 방문 시간 카운터를 구축하는 것이 어떤 것인지에 대한 귀하의 의견을 공유하십시오.
메모
이 timeonsite.js는 상용 라이브러리이지만 비프로덕션 사이트 및 개인 웹사이트에서도 무료입니다. 따라서 CDN.js 호스팅 웹사이트에서 호스팅되는 무료 버전을 사용해 봅시다.
Reference
이 문제에 관하여(timeonsite.js 및 JS Beacons를 사용하여 웹사이트에 대한 최신 현장 방문 카운터를 구축해 보겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/saleemkce/lets-build-a-modern-time-on-site-counter-for-your-website-with-timeonsitejs-and-js-beacons-2hag텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)