2011-10-05 2 views
0

SpicIE (http://archive.msdn.microsoft.com/SpicIE)을 사용하여 Internet Explorer (IE8) 플러그인을 작성하려고합니다. OnDocumentComplete 방법 안에서, 나는 다음을 수행하여 페이지의 HTML에 액세스 할 수 있어요 :SpicIE Internet Explorer Plugin : 렌더링 된 HTML에 액세스하는 방법?

private static void SamplePlugin_OnDocumentComplete(object pDisp, ref object url){ 
    SHDocVw.IWebBrowser2 browser = HostInstance.BrowserRef as SHDocVw.IWebBrowser2; 
    mshtml.HTMLDocument htmlDocument = browser.Document as mshtml.HTMLDocument; 
    String html = htmlDocument.documentElement.outerHTML; 
} 

내 문제는 초기 페이지가로드 된 후 일부 (대부분의) 페이지가 서버에 다시 추가로 통화를한다. 어떻게 사용자에게 표시되는 최종 페이지의 "렌더링 된"HTML에 액세스 할 수 있습니까? 예를 들어 한 사이트에서로드가 발생하고 DIV에 텍스트를 채우는 AJAX 호출이 있습니다. 그러나 위의 코드를 사용하면이 텍스트가 표시되지 않습니다. 동적 콘텐츠가로드되기 전에 페이지가 표시됩니다. 어떤 아이디어?

정말 고맙습니다. 감사합니다.

답변

0

IE8에서는 mutation events을 지원하지 않으므로 거의 불가능한 작업입니다.

DOM에 대한 변경 사항을 감지하기 위해서는 돌연변이 이벤트가 필요합니다. (정확히 AJAXed 정보가 페이지에 추가 될 때 발생합니다.) 따라서 변경된 요소를 감지하기 위해 일종의 폴링을 수행하는 것이 유일한 기회이지만 성능에 현저한 영향을 미칩니다. 죄송합니다.

+0

응답 해 주셔서 감사합니다. Spicie를 사용하여 변경된 요소에 대한 청취/폴링을 어떻게 제안합니까? 참고로 IE8 개발자 도구에 내장 된 HTML을 렌더링 할 수 있다는 것을 알았습니다. 그 방법을 활용할 수 있습니까? – Jared

+0

개발자 도구를 사용할 수 있다고 생각하지 않습니다. 그리고 종종 최종 페이지인지 여부를 결코 알 수 없으므로 사용자에게 "최종"페이지를 표시 할 수없는 경우가 많습니다. 끊임없이 HTML을 변경하는 일이있을 수 있습니다. 너 뭐하려고? –

+0

나는 디버거를 작성 중이며 FireBug의 HTML 트리 구조 기능과 비슷한 것을 만들려고한다. – Jared