2012-02-27 5 views
31

가능한 중복 :
Detect changes in the DOM"DOM 변경시"이벤트가 있습니까?

내가 설정에 뭔가가 DOM에/제거/추가 변경 될 때마다 발생해야하는 이벤트 핸들러가 필요합니다. 내 경우에는 This answer이 작동하지 않습니다. 타사 개발자가 DOM을 수정할 수 있으며 각 DOM 변경시 스크립트의 코드를 검증해야합니다. 이벤트는 input/textarea/select change에서 실행되지 않아야합니다.

우리는 이 아닙니다.은 모든 브라우저를 타겟팅합니다. 웹킷 (Chrome, Safari)에서 작동하는 한 충분히 좋습니다.

아이디어가 있으십니까?

+6

사람이의 정확한 복제본라는 질문에 링크가되어 있습니까? 나는 여기에서 구글로왔다. – travis

+5

@travis : 정확한 복제는 아니지만 닫기 : http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom – Sherzod

+2

@travis : 사실 내 답변에 맞는 답변을 찾았습니다 : DOMSubtreeModified 사용 이벤트가 발생하지만 브라우저 지원을 확인해야합니다. Webkit은 잘 작동합니다. – Sherzod

답변

3

모든 브라우저에서 이러한 이벤트가 발생하지는 않을 것이라고 생각합니다. 나는 커스텀 이벤트와 함께 가서 dom을 조작 할 때마다 트리거 할 것입니다.

//Subscribe to domChanged event 
$(document).bind('domChanged', function(){ 
    alert('Dom changed'); 
}); 

//Trigger the domChanged event 
$(document).trigger('domChanged'); 
+16

문제는 dom이 제 3 자에 의해 조작됨을 나타냅니다. 그래서 이것은 작동하지 않을 것입니다. – Myster

+1

'domChanged'는 이벤트 모듈에 정의 된 상수 여야합니다. 예를 들어,'export const domInjected = 'myDOMInjected';'(ES6) DOMNodeInserted와 같은 뭔가가 이미 존재할 수 있다는 것을주의해야 할 수도 있습니다. –