2011-10-05 58 views
0

我正在嘗試使用SpicIE編寫Internet Explorer(IE8)插件(http://archive.msdn.microsoft.com/SpicIE)。裏面的OnDocumentComplete方法,我能夠做訪問該網頁的HTML如下:SpicIE Internet Explorer插件:如何訪問呈現的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?例如,我正在查看一個網站加載,然後有AJAX調用填充DIV文本。但是當我使用上面的代碼時,我沒有得到這個文本。我正在加載動態內容之前獲取頁面。有任何想法嗎??

我真的很感激它,謝謝!

回答

0

使用IE8這是一項幾乎不可能完成的任務,因爲它不支持mutation events

您需要使用突變事件來檢測對DOM所做的更改(而這正是將AJAX信息添加到頁面時發生的情況)。因此,您唯一的機會是進行某種輪詢來檢測更改的元素,但這會對性能產生顯着影響。抱歉。

+0

感謝您的回覆。你如何使用Spicie建議對變化的元素進行監聽/輪詢?在附註中,我注意到內置的IE8開發人員工具能夠顯示呈現的HTML,也許有一種方法可以挖掘它? – Jared

+0

我不認爲你可以使用開發人員工具。而且通常你不能得到顯示給用戶的「最終」頁面,因爲你永遠不會知道它是否真的是最終的。有可能會不斷改變HTML。你想做什麼? –

+0

我在寫一個調試器,並且正在尋找類似於FireBug的HTML樹結構功能的東西。 – Jared

相關問題