MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
(Created page with "→Any JavaScript here will be loaded for all users on every page load.: <noscript> <img src="https://shynet.catrone3.com/ingress/33a766c6-f078-4641-b436-82cb743a8cb4/pixel.gif"> </noscript> <script defer src="https://shynet.catrone3.com/ingress/33a766c6-f078-4641-b436-82cb743a8cb4/script.js"></script>") |
No edit summary |
||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
// This is a lightweight and privacy-friendly analytics script from Shynet, a self-hosted | |||
// analytics tool. To give you full visibility into how your data is being monitored, this | |||
// file is intentionally not minified or obfuscated. To learn more about Shynet (and to view | |||
// its source code), visit <https://github.com/milesmcc/shynet>. | |||
// | |||
// This script only sends the current URL, the referrer URL, and the page load time. That's it! | |||
var Shynet = { | |||
dnt: false, | |||
idempotency: null, | |||
heartbeatTaskId: null, | |||
skipHeartbeat: false, | |||
sendHeartbeat: function () { | |||
try { | |||
if (document.hidden || Shynet.skipHeartbeat) { | |||
return; | |||
} | |||
Shynet.skipHeartbeat = true; | |||
var xhr = new XMLHttpRequest(); | |||
xhr.open( | |||
"POST", | |||
"https://shynet.catrone3.com/ingress/33a766c6-f078-4641-b436-82cb743a8cb4/script.js", | |||
true | |||
); | |||
xhr.setRequestHeader("Content-Type", "application/json"); | |||
xhr.onload = function () { | |||
Shynet.skipHeartbeat = false; | |||
}; | |||
xhr.onerror = function () { | |||
Shynet.skipHeartbeat = false; | |||
}; | |||
xhr.send( | |||
JSON.stringify({ | |||
idempotency: Shynet.idempotency, | |||
referrer: document.referrer, | |||
location: window.location.href, | |||
loadTime: | |||
window.performance.timing.domContentLoadedEventEnd - | |||
window.performance.timing.navigationStart, | |||
}) | |||
); | |||
} catch (e) {} | |||
}, | |||
newPageLoad: function () { | |||
if (Shynet.heartbeatTaskId != null) { | |||
clearInterval(Shynet.heartbeatTaskId); | |||
} | |||
Shynet.idempotency = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); | |||
Shynet.skipHeartbeat = false; | |||
Shynet.heartbeatTaskId = setInterval(Shynet.sendHeartbeat, parseInt("5000")); | |||
Shynet.sendHeartbeat(); | |||
} | |||
}; | |||
window.addEventListener("load", Shynet.newPageLoad); |
Revision as of 20:34, 16 June 2024
/* Any JavaScript here will be loaded for all users on every page load. */
// This is a lightweight and privacy-friendly analytics script from Shynet, a self-hosted
// analytics tool. To give you full visibility into how your data is being monitored, this
// file is intentionally not minified or obfuscated. To learn more about Shynet (and to view
// its source code), visit <https://github.com/milesmcc/shynet>.
//
// This script only sends the current URL, the referrer URL, and the page load time. That's it!
var Shynet = {
dnt: false,
idempotency: null,
heartbeatTaskId: null,
skipHeartbeat: false,
sendHeartbeat: function () {
try {
if (document.hidden || Shynet.skipHeartbeat) {
return;
}
Shynet.skipHeartbeat = true;
var xhr = new XMLHttpRequest();
xhr.open(
"POST",
"https://shynet.catrone3.com/ingress/33a766c6-f078-4641-b436-82cb743a8cb4/script.js",
true
);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onload = function () {
Shynet.skipHeartbeat = false;
};
xhr.onerror = function () {
Shynet.skipHeartbeat = false;
};
xhr.send(
JSON.stringify({
idempotency: Shynet.idempotency,
referrer: document.referrer,
location: window.location.href,
loadTime:
window.performance.timing.domContentLoadedEventEnd -
window.performance.timing.navigationStart,
})
);
} catch (e) {}
},
newPageLoad: function () {
if (Shynet.heartbeatTaskId != null) {
clearInterval(Shynet.heartbeatTaskId);
}
Shynet.idempotency = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
Shynet.skipHeartbeat = false;
Shynet.heartbeatTaskId = setInterval(Shynet.sendHeartbeat, parseInt("5000"));
Shynet.sendHeartbeat();
}
};
window.addEventListener("load", Shynet.newPageLoad);