-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpagevisibilityuserscript.js
48 lines (41 loc) · 1.39 KB
/
pagevisibilityuserscript.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// ==UserScript==
// @name PreventPageVisibility
// @namespace https://github.com/IceWreck
// @match *://*/*
// @run-at document-start
// @grant none
// @version 1.1
// @author IceWreck
// @description Block websites from knowing if you switched tabs/windows
// ==/UserScript==
// This userscript blocks the page visibility API and to some extent the old blur/focus APIs.
let events_to_block = [
"visibilitychange",
"webkitvisibilitychange",
"mozvisibilitychange",
"hasFocus",
"blur",
"focus",
"mouseleave"
]
for (let event_name of events_to_block) {
document.addEventListener(event_name, function (event) {
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
}, true);
}
for (let event_name of events_to_block) {
window.addEventListener(event_name, function (event) {
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
}, true);
}
document.hasFocus = function () { return true; };
document.onvisibilitychange = null;
Object.defineProperty(document, "visibilityState", { value: "visible" });
Object.defineProperty(document, "hidden", { value: false });
Object.defineProperty(document, "mozHidden", { value: false });
Object.defineProperty(document, "webkitHidden", { value: false });
Object.defineProperty(document, "webkitVisibilityState", { value: "visible" });