(()=> {
const vars=window.fctPhistoryVars;
const trackPageView=()=> {
const request=new XMLHttpRequest();
request.open('POST', vars.ajax_url, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
let params='action=fct_track_page_history' +
'&page_url=' + encodeURIComponent(window.location.href) +
'&referrer=' + encodeURIComponent(document.referrer);
if(vars.page_id){
params +='&page_id=' + encodeURIComponent(vars.page_id);
}
request.send(params);
};
let enteredAt=Date.now();
const sendDwell=()=> {
const seconds=Math.round((Date.now() - enteredAt) / 1000);
enteredAt=Date.now();
if(seconds < 1||!navigator.sendBeacon){
return;
}
const data=new FormData();
data.append('action', 'fct_track_dwell');
data.append('page_url', window.location.href);
data.append('dwell', seconds);
navigator.sendBeacon(vars.ajax_url, data);
};
document.addEventListener('DOMContentLoaded', trackPageView);
document.addEventListener('visibilitychange', ()=> {
if(document.visibilityState==='hidden'){
sendDwell();
}else{
enteredAt=Date.now();
}});
window.addEventListener('pagehide', sendDwell);
})();