2011-09-11 118 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