Как перехватить изменения innerHTML в JavaScript? - PullRequest
10 голосов
/ 12 сентября 2011

Мне нужно перехватить любые изменения содержимого ячейки внутри моей веб-страницы.

Следующий код показывает мне, что 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";

Код - просто игрушечный пример. В моем реальном случае изменения на странице (и, следовательно, в ячейке) вносятся веб-приложением, которое я не контролирую.

Ответы [ 2 ]

8 голосов
/ 12 сентября 2011

Вы не можете слушать элемент DOM change таким образом.change событие в основном для input s

Есть несколько других новых событий DOM 3, которые могут помочь вам в этом.

Вот некоторые из них:

DOMCharacterDataModified // Черновик

DOMSubtreeModified

1 голос
/ 12 сентября 2011

Означает ли это Самый эффективный метод обнаружения / мониторинга изменений DOM? справка?

Кажется, что нет 100% кросс-браузерных решений, и одним из обходных путей являетсяопросите интересующие вас элементы, чтобы узнать, изменится ли их innerHTML.length!

...