我正在使用 MutationObserver 来查找添加到网页的图像。由于许多图像是通过 CSSbackground-image
属性显示的,因此除了查找img
标签之外,我还在检查当前/计算的 CSS 样式,例如...
var hasBackgroundImage = function(node) {
var nodeStyle = node.currentStyle || getComputedStyle(node, null);
return (
nodeStyle &&
nodeStyle.backgroundImage &&
nodeStyle.backgroundImage != "none"
);
};
但是,似乎在触发突变事件的节点和正在应用的 CSS 规则之间存在延迟,因此在突变事件期间似乎没有延迟,backgroundImage
即使稍后会有。当代码在调试期间工作(使用断点单步执行)但在运行时不起作用时,我注意到了这一点。延迟突变事件处理setTimeout
也可以,但要确定延迟需要相当大并且从页面到页面发生变化(我不确定何时保证应用 CSS 规则)。一个可能的原因可能只是延迟加载或 CSS 内容的注入。
实现此功能的最佳方法是什么?我想我正在经历一种风格变化的突变,但我怀疑这是否存在。