gpt4 book ai didi

javascript - 是什么导致我的突变观察者使用脚本出现此错误?

转载 作者:行者123 更新时间:2023-12-02 23:59:27 24 4
gpt4 key购买 nike

最初提出的问题已得到解答。此外,Stackoverflow 之外的人已经为我试图通过我的脚本实现的目标提供了完整的解决方案,我已将其添加为我的问题的答案。我自己的答案中详细介绍了脚本本身及其解决的具体问题的摘要。

原始问题:

不幸的是,我不是程序员,所以我的经验非常有限。

我的浏览器在启动几秒后就会用不正确的 src 覆盖正确的 img src

我的脚本的预期功能是一种解决方法,当我的浏览器覆盖正确的 src 时,立即再次用正确的 src 替换损坏的 src .

function getElementsBySrc(srcValue) {
var nodes = [];
var e = document.getElementsByTagName('img');

for (var i = 0; i < e.length; i++) {
if (e[i].hasAttribute('src') && e[i].getAttribute('src') == srcValue) {
nodes.push(e[i]);
}
}

return nodes;
}

function initMod(){
if(!document.querySelector("#browser")){
setTimeout(initMod, 1000);
return;
}

var targetNode = document.getElementsByTagName('img');
var config = { attributes: true, childList: false, subtree: false, characterData: false };

var callback = function(mutationsList, observer) {
for(var mutation of mutationsList) {
if (mutation.type == 'attributes') {

console.log('The ' + mutation.attributeName + ' attribute was modified.');

var n = getElementsBySrc('https://hyperspace.marquiskurt.net/icons/favicon-32x32.png');
for (var i = 0; i < n.length; i++) {
n[i].setAttribute('src', 'chrome://favicon/https://hyperspace.marquiskurt.net/app/');
}

}
}
};

var observer = new MutationObserver(callback);

observer.observe(targetNode, config);

}
initMod();

该脚本在我的浏览器启动时直接加载。我的 Chrome Devtools 控制台出现错误:

未捕获类型错误:无法在“MutationObserver”上执行“观察”:参数 1 不是“Node”类型。

最佳答案

as document.getElementsByTagName('img'); 返回元素的列表,而不是节点,您不能使用 targetNode (因为它不是节点)

这里我使用 document.querySelectorAll 代替,结果相同,但它有一个 forEach 方法,我用它为每个 IMG 创建突变观察者

function initMod() {
if(!document.querySelector("#browser")){
setTimeout(initMod, 1000);
return;
}

const callback = (mutationsList, observer) => {
for(let mutation of mutationsList) {
if (mutation.type == 'attributes') {
console.log('The ' + mutation.attributeName + ' attribute was modified.');
const n = getElementsBySrc('https://hyperspace.marquiskurt.net/icons/favicon-32x32.png');
for (let e of n) {
e.setAttribute('src', 'chrome://favicon/https://hyperspace.marquiskurt.net/app/');
}
}
}
};
const config = { attributes: true, childList: false, subtree: false, characterData: false };
document.querySelectorAll('img').forEach(targetNode => {
const observer = new MutationObserver(callback);
observer.observe(targetNode, config);
});
}

关于javascript - 是什么导致我的突变观察者使用脚本出现此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55239408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com