30 lines
834 B
JavaScript
30 lines
834 B
JavaScript
(function() {
|
|
var d = document.currentScript && document.currentScript.getAttribute('data-domain');
|
|
if (!d) d = location.hostname;
|
|
|
|
function send(path, ref) {
|
|
var payload = {
|
|
domain: d,
|
|
path: path,
|
|
referrer: ref || document.referrer || ''
|
|
};
|
|
var url = '/api/st';
|
|
if (navigator.sendBeacon) {
|
|
navigator.sendBeacon(url, JSON.stringify(payload));
|
|
} else {
|
|
fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), keepalive: true });
|
|
}
|
|
}
|
|
|
|
send(location.pathname, document.referrer);
|
|
|
|
var _push = history.pushState;
|
|
history.pushState = function() {
|
|
_push.apply(history, arguments);
|
|
send(location.pathname, '');
|
|
};
|
|
window.addEventListener('popstate', function() {
|
|
send(location.pathname, '');
|
|
});
|
|
})();
|