我正在开发一个小型 Firefox 插件,用于PageMod
处理网页中加载的图像元素。我在网上看到过使用 jQuery 的示例,但由于我正在向每个网页添加内容脚本,因此添加 jQuery 可能会造成无法弥补的损害。
由于 Firefox 支持,感谢AndrewVermieMutationObserver
,我尝试执行以下操作:
内容.js
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if(mutation.tagName == "IMG")
{
//I'm not sure this object can be treated as a DOM Element (?)
mutation.src = "http://s6.tinypic.com/15npphk_th.jpg";
}
for (var i = 0; i < mutation.addedNodes.length; ++i) {
var node = mutation.addedNodes[i],
matches = [].slice.call(node.querySelectorAll('img'));
for (var j = 0; j < matches.length; ++j) {
var img = matches[j];
img.src = "http://s6.tinypic.com/15npphk_th.jpg";
}
}
});
});
var config = { attributes: true, childList: true, subtree: true, characterData: true};
observer.observe(window.document, config);
var elements = document.getElementsByTagName("img");
var elementsLength = elements.length;
for (var i = 0; i < elementsLength; i++)
{
elements[i].src = "http://s6.tinypic.com/15npphk_th.jpg";
}
main.js
pageMod.PageMod({
include: "*",
contentScriptWhen: 'ready',
contentScriptFile: [self.data.url("content.js")],
onAttach: //...
}
});
怎么了 :
- 访问http://imgur.com/
- 开始滚动直到动态加载图像
- 请注意,它们没有改变
当我将鼠标悬停在图像上时,我console.log()
只能看到.tagName
。p
#text
我需要的
遍历注入脚本的网页中动态加载的每个元素,并能够修改元素的属性。
如果它可以用纯 JavaScript 来完成,不管有没有MutationObserver
,那都会非常棒。
否则,如果我能发现某些元素已被加载以再次通过页面的所有元素重复,那会没问题但不会膨胀。
我希望我已经把事情弄清楚了。
任何帮助将不胜感激。