2012-10-24 4 views
3

페이지가로드 된 후 dom에 iFrame을 주입하는 Chrome 확장 프로그램이 있습니다.Chrome 확장 프로그램 외부에서 생성 된 DOM 변경 감지

또한 DOM 변경 사항을 수신하고 싶지만 iFrame을 주입 한 결과 해고 된 DOMSubtreeModified을 무시하고 싶습니다. 따라서 iFrame을 삽입하기 전후에 어떤 이벤트가 발생하더라도 캡처하고 싶습니다.

var processRequest = function() { 
    $('body').bind('DOMSubtreeModified', DOMModificationHandler); 
    return 'complete'; 
} 

function DOMModificationHandler() { 
    $(this).unbind('DOMSubtreeModified'); 
    setTimeout(function() { 
    //skip this if it was my iFrame injection that caused this event 
    //someLocalFunction(); 
    $('#ContentContainer').bind('DOMSubtreeModified', DOMModificationHandler); 
    },1000); 
} 

내 주사를 구별하기 위해 할 수있는 일, 그리고 다른 DOM 이벤트, 때 DOMModificationHandler 화재 있는가 :

다음은 DOM의 변화에서 찾고 내 콘텐츠 스크립트의 기초입니까?

** 업데이트 : 일부 유형의 ID 또는 데이터 요소를 iFrame에 추가하는 것을 고려했지만 이벤트가 발생한 iFrame이 아니라 그곳에 있음을 알려줍니다. 특히 dom의 일부를 업데이트 한 AJAX 요청이있을 때. ID 또는 데이터 속성은 이미 존재하므로 돔 변경의 원인을 아직 모릅니다.

답변

1

을 확인한 후 http://www.w3.org/TR/DOM-Level-3-Events/#events-event-type-target을 확인하십시오. 목표에 따라 이벤트를 필터링 할 수 있어야합니다. 이 경우 대상은 수정할 하위 트리입니다.

+0

그래, 그 트릭을했다. 이벤트 인수를 DOMModificationHandler 함수에 추가했습니다. 거기에서 e.target.id가 존재하는지 테스트합니다. 이를 통해 필자는 필 요한 방식으로 이벤트를 필터링 할 수 있습니다. 감사! –

관련 문제