-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathre-direct.js
44 lines (36 loc) · 931 Bytes
/
re-direct.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
"use strict";
chrome.storage.local.get("hideReferrer", (settings) => {
const hideReferrer = (settings.hideReferrer !== false);
const cleanLink = (a) => {
if (a.pathname === "/url") {
const href = getOriginalUrl(a);
if (href) {
updateLink(a, href);
}
}
};
const getOriginalUrl = (a) =>
a?.dataset?.data?.href || (new URLSearchParams(a.href)).get("url");
const updateLink = (a, href) => {
a.href = href;
if (hideReferrer) {
a.rel = "noreferrer";
}
};
for (const a of document.getElementsByTagName("a")) {
cleanLink(a);
}
const observer = new MutationObserver((mutations) => {
observer.disconnect();
mutations.forEach((mrec) => cleanLink(mrec.target));
observe();
});
const observe = () => {
observer.observe(document, {
attributes: true,
subtree: true,
attributeFilter: ["href"]
});
};
observe();
});