2011-09-11 77 views
8

我需要拦截网页内部单元格内容的任何更改。如何拦截javascript中的innerHTML更改?

以下代码显示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应用程序完成的。

+0

你在测试什么浏览器类型?记住IE使用非标准的.attachEvent()方法。 –

+2

首先发生的变化如何?当你说“一个Web应用程序”,这意味着一个建立并返回页面内容的服务器端应用程序。如果是这种情况,那么JavaScript代码将无法检测到这种变化,因为“更改”发生在服务器上,之前JavaScript的范围甚至可以应用。从页面上的JavaScript角度来看,没有任何变化。 – David

回答

8

你不能以这种方式听DOM元素changechange事件主要针对input s

还有一些其他新的DOM 3事件可以帮助您解决这个问题。

下面是一些:

DOMCharacterDataModified //草案

DOMSubtreeModified

+0

不幸的是所有的突变事件都被弃用!有没有像DOMCharacterDataModified这样的其他神奇事件来监听innerHTML值的变化? – Rafe