[英]how to intercept innerHTML changes in javascript?
我需要拦截网页内单元格内容的任何更改。
以下代码显示 addEventListener 不起作用。
function modifyText() {
alert("!");
}
var el=document.getElementById("mycell");
el.innerHTML="a"
el.addEventListener("change", modifyText, false);
// After next instruction I expect an alert message but it does not appear...
el.innerHTML="Z";
该代码只是一个玩具示例。 在我的真实案例中,页面中的更改(因此也在单元格中)是由我无法控制的 web 应用程序进行的。
有一种现代方法可以捕获 innerhtml 的变化:
https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe
例子:
// identify an element to observe
elementToObserve = window.document.getElementById('y-range').children[0];
// create a new instance of 'MutationObserver' named 'observer',
// passing it a callback function
observer = new MutationObserver(function(mutationsList, observer) {
console.log(mutationsList);
});
// call 'observe' on that MutationObserver instance,
// passing it the element to observe, and the options object
observer.observe(elementToObserve, {characterData: false, childList: true, attributes: false});
childList 突变触发 innerHTML 更改。
你不能以这种方式监听 DOM 元素的change
。 change
事件主要是针对input
的
还有一些其他新的 DOM 3 事件可以帮助您解决这个问题。
这里有一些:
似乎没有任何 100% 跨浏览器解决方案,其中一种解决方法是轮询感兴趣的元素以查看它们的 innerHTML.length 是否发生变化!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.