Firefox 브라우저에서 액세스할 때 현장 시간 데이터가 DB에 저장되지 않는 이유는 무엇입니까?
우리는 문서의 지침에 따라 사이트 라이브러리 온사이트 시간 추적기에 시간을 포함시켰습니다.
<script type="text/javascript">
var Tos;
(function(d, s, id, file) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.onload = function() {
// save with XMLHttpRequest or sendBeacon
var config = {
trackBy: 'seconds',
developerMode: true,
callback: function(data) {
console.log('***');
console.log(data);
// give your endpoint URL/ server-side URL that is going to handle your TOS data which is of POST method. Eg. PHP, nodejs or python URL which saves this data to your DB
var endPointUrl = 'http://localhost:4500/tos'; // replace with your endpoint URL
if (data && data.trackingType) {
if (data.trackingType == 'tos') {
if (Tos.verifyData(data) != 'valid') {
console.log('Data abolished!');
return;
}
}
if (navigator && typeof navigator.sendBeacon === 'function') {
data.trasferredWith = 'sendBeacon';
var blob = new Blob([JSON.stringify(data)], {type : 'application/json'});
navigator.sendBeacon(endPointUrl, blob);
}
}
}};
if(TimeOnSiteTracker) {
Tos = new TimeOnSiteTracker(config);
}
};
js.src = file;fjs.parentNode.insertBefore(js, fjs);
} (document, 'script', 'TimeOnSiteTracker', '//cdn.jsdelivr.net/gh/saleemkce/timeonsite@1.1.0/timeonsitetracker.min.js'));
</script>
브라우저를 새로 고친 후 Firefox 웹 콘솔에 기록된 데이터가 올바르게 표시됩니다(로그 지속성 사용, 그렇지 않으면 새로 고칠 때마다 로그가 지워짐).
***
{
TOSId: 14650383319214848
TOSSessionKey: "8808159448467693499978"
TOSUserId: "anonymous"
URL: "https://localhost/index.html"
currentTime: "2021-03-30 16:25:17.908"
entryTime: "2021-03-30 16:24:36.911"
timeOnPage: 41
timeOnPageByDuration: "0d 00h 00m 41s"
timeOnPageTrackedBy: "second"
timeOnSite: 41
timeOnSiteByDuration: "0d 00h 00m 41s"
title: "home page - rental crown"
trackingType: "tos"
}
그러나 이 세션 데이터는 MariaDB에 저장되지 않습니다.데이터가 어디로 가는지 단서가 없습니다.두 번째 페이지를 새로 고치면 Firefox 웹 콘솔에 업데이트된 데이터 개체가 다시 표시되지만 MariaDB에는 캡처된 데이터가 없습니다.Chrome에서는 작동했지만 DB에 데이터가 제대로 저장되지 않는 것 같습니다.파이어폭스에서 문제를 해결하는 방법을 알고 있습니까?
저는 여기에 있는 설명서를 따릅니다.그리고 도움을 주셔서 대단히 감사합니다.
저는 오늘 이것을 다시 테스트했습니다.크롬, 파이어폭스 등 많은 브라우저에서 sendBeacon이 한동안 작동하지 않았던 것 같습니다.크롬과 파이어폭스 모두에서 이에 대한 몇 가지 미해결 문제가 있었습니다.
하지만 오늘 Chrome과 Firefox 모두에서 timeOnSite Tracker JS로 다시 테스트했습니다.페이지 새로 고침, 탭 닫기 또는 브라우저 닫기 시나리오에서 데이터를 데이터베이스에 성공적으로 게시하는 것으로 보입니다.
현재 업데이트: 2021년 11월 13일
브라우저가 버전과 함께 성공적으로 작동:
크롬: 95.0.4638.69
파이어폭스: 94.0.1
그러나 이전 브라우저나 sendBeacon을 완전히 지원하지 않는 브라우저에서는 이 기능이 작동하지 않을 수 있습니다.따라서 이러한 브라우저에서 사이트 데이터를 실시간으로 얻을 수 없는 경우에는 요청 개체가 있는 로컬 스토리지 옵션으로 폴백하십시오.
var config = {
trackBy: 'seconds',
request: { // presence of request object denotes that data is to be saved in local storage
url: 'http://localhost:4500/tos'
}
}
언급URL : https://stackoverflow.com/questions/66908165/why-is-time-on-site-data-not-getting-saved-in-db-when-accessed-from-firefox-brow
'programing' 카테고리의 다른 글
Panda를 사용하여 열의 최대값 찾기 및 해당 행 값 반환 (0) | 2023.06.08 |
---|---|
텍스트 보기에서 링크를 클릭 가능하게 만드는 방법 (0) | 2023.06.08 |
루비: 문자열을 부울로 변환하는 방법 (0) | 2023.06.08 |
파이썬에서 modb를 어떻게 계산합니까? (0) | 2023.06.08 |
C#으로 작성된 UTF-8 CSV 파일에는 Excel의 â 문자가 표시됩니다. (0) | 2023.06.08 |