2011-10-05 30 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

相关问题