-
Notifications
You must be signed in to change notification settings - Fork 0
/
content.js
60 lines (53 loc) · 1.66 KB
/
content.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
const replacements = {
'Путина': 'Хуйла',
'путина': 'хуйла',
'Путине': 'Хуйле',
'путине': 'хуйле',
'Путину': 'Хуйлу',
'путину': 'хуйлу',
'Путин': 'Хуйло',
'путин': 'хуйло',
'Путиным': 'Хуйлом',
'путиным': 'хуйлом',
'Пу́тин': 'Ху́йло',
'Putin': 'Huilo',
'putin': 'huilo',
'Путін': 'Хуйло',
'путін': 'Хуйло',
'Путіна': 'Хуйла',
'путіна': 'хуйла',
'Путіне': 'Хуйле',
'путіне': 'хуйле',
'Путіну': 'Хуйлу',
'путіну': 'хуйлу',
'Путіным': 'Хуйлом',
'путіным': 'хуйлом',
};
let found = false;
for (const key in replacements) {
if (document.body.innerText.includes(key)) {
found = true;
break;
}
}
chrome.runtime.sendMessage({action: 'updateIcon', found: found});
const regex = new RegExp(Object.keys(replacements).join("|"), "gi");
function replaceTextContent(textContent) {
return textContent.replace(regex, (matched) => replacements[matched]);
}
function traverseAndReplace(node) {
const walker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false);
let textNode;
while (textNode = walker.nextNode()) {
textNode.textContent = replaceTextContent(textNode.textContent);
}
}
function replaceTextInDocument() {
traverseAndReplace(document.body);
}
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.action === "replaceText") {
replaceTextInDocument();
sendResponse({ status: "done" });
}
});