【发布时间】:2018-09-20 14:20:57
【问题描述】:
我试图检测目标元素何时变为可见(可见或显示:块),无论它放在 HTML 中的什么位置。
我尝试使用 MutationObservers,但是,只有当观察到的元素在 CSS 属性中有直接变化时,才能检测到可见性变化。因此,它会忽略对其父元素的更改。
var targetNode = document.getElementById('target');
var observer = new MutationObserver(function(){
alert(targetNode.offsetWidth);
}
);
observer.observe(targetNode, { attributes: true, childList: true });
当父元素 CSS 属性发生更改并且附加到子/目标元素的 MuatationObserver 未检测/观察到此问题时,就会出现问题,如 jsfiddle 中所示。观察到的 DOM 元素是否有其他方法(除了使用间隔)来检测从父级继承的 CSS 变化?
【问题讨论】:
-
您可以改用
IntersectionObserver。 -
是的,这似乎是我需要的。不过,浏览器兼容性似乎并不理想。
标签: javascript html css onchange mutation-observers