运行此用户脚本时,该用户脚本仅查找并替换某些字母和单词,不会替换主要文本,仅替换在网页完全加载后加载的文本。如何使其替换网页上的所有文本?我尝试了所有不同的@run-at
类型,但到目前为止没有任何效果。
// ==UserScript==
// @name OwO Script
// @namespace
// @version 0.2
// @description
// @author You
// @match *://*/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function () {
let rules = [
['\\blove\\b', 'wuv'],
['\\bmr\\b', 'mister'],
['\\bbathroom\\b', 'potty'],
['\\bdog\\b', 'doggo'],
['\\bcat\\b', 'kitteh'],
['\\bhell\\b', 'heck'],
['\\bfuck|\\bfuk', 'frick'],
['\\bshit', 'shoot'],
['\\bfriend\\b', 'frend'],
['\\bstop\\b', 'stawp'],
['[rl]', 'w']
]
let suffixes = [
'(ノ´ з `)ノ',
'( ´ ▽ ` ).。o♡',
'(´,,•ω•,,)♡',
':3',
'>:3',
'OwO',
'uwu',
'hehe',
'xox',
'>3<',
'murr~',
'UwU',
'-3-',
'c:',
'*nuzzles*',
'*waises paw*',
'*notices bulge*'
]
function recurse (node) {
if (node.nodeValue == null) {
for (let child of node.childNodes) {
recurse(child)
}
} else if (node.nodeType === 3) {
let text = node.nodeValue
for (let [find, replace] of rules) {
text = text.replace(RegExp(find, 'g'), replace)
text = text.replace(RegExp(find.toUpperCase().replace(/\\B/g, '\\b'), 'g'), replace.toUpperCase())
}
if (Math.random() < 0.2) {
text += ` ${suffixes[Math.floor(Math.random() * suffixes.length)]}`
}
node.nodeValue = text
}
}
document.body.addEventListener('DOMNodeInserted', event => {
recurse(event.target)
})
})()