2011-09-11 3 views
8

내 웹 페이지의 셀 내용에 변경 사항을 가로 챌 필요가 있습니다.자바 스크립트에서 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"; 

코드는 단지 장난감 예입니다. 내 실제 경우에는 페이지의 변경 사항 (및 셀의 변경 사항)도 웹 앱에서 제어 할 수 있습니다.

+0

이것을 테스트하는 브라우저 유형은 무엇입니까? IE가 비표준 .attachEvent() 메소드를 사용한다는 것을 기억하십시오. –

+2

처음에 변경 사항은 어떻게 발생합니까? "웹 앱"이라고 할 때, 페이지 내용을 만들고 반환하는 서버 측 응용 프로그램을 의미합니다. 그렇다면 자바 스크립트의 범위가 적용되기 전에 "변경"이 서버에서 발생했기 때문에 자바 스크립트 코드가 변경 사항을 감지 할 수 없습니다. 페이지의 JavaScript 측면에서 볼 때 아무런 변화가 없었습니다. – David

답변

8

그런 식으로 DOM 요소 change을들을 수 없습니다. change 이벤트는 대부분 input입니다.

여기에 도움이되는 몇 가지 새로운 DOM 3 이벤트가 있습니다.

DOMCharacterDataModified // 초안

DOMSubtreeModified

+0

불행히도 모든 변경 이벤트는 더 이상 사용되지 않습니다! innerHTML 값 변경을 수신 대기 DOMCharacterDataModified 같은 다른 마법의 이벤트가 있습니까? – Rafe

1

Most efficient method of detecting/monitoring DOM changes? 도움을합니까 : 여기

몇 가지입니까?

100 % 크로스 브라우저 솔루션이없는 것처럼 보입니다. 해결 방법 중 하나는 innerHTML.length가 변경되는지 확인하기 위해 관심있는 요소를 폴링하는 것입니다.

관련 문제