2017-03-12 5 views
3

저는 tree-mirror.js이라는 오픈 소스 라이브러리를 사용하여 mutation-summary.js을 사용하여 DOM 미러링을 수행했습니다.트리 미러 js 및 돌연변이 요약은 iframe을 지원합니까?

모든 것이 좋지만 iframe입니다. 주 문서에 iframe이 포함되어 있으면 iframe에있는 문서의 DOM 변경 사항이이 라이브러리에 캡처되지 않습니다. tree-mirror.js의 코드를 읽는 것으로 파악할 수있는 것은 주요 문서에 돌연변이 관찰자를 바인딩하지만 iframe 문서도 자동으로 처리 할 수 ​​있는지 이해하지 못했기 때문입니다.

라이브러리에서 지원되지 않는지 확실하지 않거나 뭔가 누락되었습니다. 누구든지이 라이브러리를 사용하여이 문제가 발생 했습니까? 친절하게 도와주세요.

+1

iframe이 별도의 문서이므로 누락 된 돌연변이를 감지하려면 각 iframe 내에 별도의 MutationObserver를 첨부해야합니다. – wOxxOm

+0

감사. 나는 이해. 이 라이브러리가 각각의 iframe 문서에 명시 적으로 돌연변이 옵저버를 첨부하지 않고 iframe을 자동으로 처리하는지 여부를 알고 싶었습니다. –

답변

-1

편집 : 이전 답변에서 잘못된 결론을 지적 해 주셔서 감사합니다.

즉, iframe 내부의 변경 사항을 MutationObserver API가 지원하지 않는 것으로 보입니다. 다음 예를 고려해보십시오.

var m = new MutationObserver((mutations) => { 
    mutations.forEach((mutation) => { 
    console.log(mutation) 
    }); 
}); 

// We observe child list and subtree changes 
m.observe(document.body, {childList: true, subtree: true}); 

// Let's create an iframe 
var iframe = document.createElement("iframe"); 

// A mutation record will be logged here 
document.body.appendChild(iframe); 

// However this will NOT log a mutation record 
iframe.contentDocument.body.appendChild(document.createElement("div")); 

그래서 여기에서 운이 좋지 않을 까봐 걱정됩니다. 위의 설명 에서처럼 DOM 변경 사항을 관찰 할 수 있도록 각 iframe 내부에 새로운 변이 관찰자를 초기화해야합니다. 언급 된 라이브러리 중 어느 것도 네이티브 MutationObserver API의 대부분 래퍼이므로이 기능을 지원하지 않습니다.

+0

코드가 틀립니다. 추가하는 새 요소는 주 문서에 의해 만들어지며 프레임의 문서 안에 추가되지 않습니다. 두 작업에서 iframe.contentDocument를 사용하십시오. – wOxxOm

+1

다음은 그 예입니다 :'iframe.contentDocument.body.appendChild (iframe.contentDocument.createDocument.createElement ('span')) .textContent = 'test'' – wOxxOm

+0

좋은 캐치 : 네 말이 맞아. 그래서 그 관찰은 내가 위에서 말한 것을 명백하게 무효화합니다. ( – nardeas