【问题标题】:SpicIE Internet Explorer Plugin: How to access rendered HTML?SpicIE Internet Explorer 插件:如何访问呈现的 HTML?
【发布时间】:2011-12-01 19:30:06
【问题描述】:

我正在尝试使用 SpicIE (http://archive.msdn.microsoft.com/SpicIE) 编写 Internet Explorer (IE8) 插件。在 OnDocumentComplete 方法中,我可以通过执行以下操作来访问页面的 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 调用。但是当我使用上面的代码时,我没有得到这个文本。我在加载动态内容之前获取页面。有什么想法吗??

非常感谢,谢谢!!

【问题讨论】:

    标签: internet-explorer mshtml


    【解决方案1】:

    对于 IE8,这几乎是一项不可能完成的任务,因为它不支持 mutation events

    您需要突变事件来检测对 DOM 所做的更改(这正是将 AJAX 信息添加到页面时发生的情况)。因此,您唯一的机会是进行某种轮询以检测更改的元素,但这会对性能产生显着影响。对不起。

    【讨论】:

    • 感谢您的回复。您如何建议使用 Spicie 监听/轮询更改的元素?顺便说一句,我注意到内置的 IE8 开发人员工具能够显示呈现的 HTML,也许有办法利用它?
    • 我认为您无法使用开发人员工具。而且通常您无法将“最终”页面显示给用户,因为您永远不会知道它是否真的是最终页面。可能有一些事情会不断地改变 HTML。你想做什么?
    • 我正在编写一个调试器,并希望制作类似于 FireBug 的 HTML 树结构功能的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多