-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgoogle-tracking-b-gone.user.js
72 lines (65 loc) · 1.99 KB
/
google-tracking-b-gone.user.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Google Tracking-B-Gone
// version 3.1
// Release Date: 2019-10-20
// https://greasyfork.org/en/scripts/1810-google-tracking-b-gone
// https://github.com/stacybrock/google-tracking-b-gone
//
// ===== INSTRUCTIONS =====
//
// This is a Tampermonkey user script.
//
// To use this script, get Tampermonkey: https://tampermonkey.net
// After you've installed it, come back to this page. A dialog box will
// appear asking you if you want to install this script.
//
// To uninstall, open the Tampermonkey dashboard and click the delete
// icon next to "Google Tracking-B-Gone" in the list of installed
// scripts.
//
//
// ==UserScript==
// @name Google Tracking-B-Gone
// @namespace http://notoriety.org
// @version 3.1
// @description Strips click tracking from Google search results
//
// @include http://www.google.*
// @include https://www.google.*
//
// @grant none
// ==/UserScript==
var debug = false;
debug && console.log("Google Tracking-B-Gone initialized.");
var checkMutation = function(mutation) {
var target = mutation.target;
if (target && target.nodeName.toLowerCase() === 'a') {
cleanLink(target);
} else if (target instanceof Element) {
target.querySelectorAll('a').forEach(cleanLink);
}
};
var changeObserver = new MutationObserver(function(mutations) {
if (mutations.target) {
checkMutation(mutations);
} else {
mutations.forEach && mutations.forEach(checkMutation);
}
});
changeObserver.observe(document.documentElement, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['href']
});
var blockEvent = function (event) {
event.stopPropagation();
};
var blockEvent2 = function (event) {
this.getAttribute('role') !== 'button' && event.stopPropagation();
};
function cleanLink(link) {
debug && console.log("cleanLink() called...");
link.onmousedown = link.onmouseup = link.onmouseenter = link.onmousemove =
link.ondbclick = link.oncontextmenu = blockEvent;
link.onclick = blockEvent2;
}