javascript - 在 BHO 中处理 JavaScript 生成的页面

标签 javascript internet-explorer bho

我正在开发一个 BHO 并且需要在 OnDocumentComplete 事件上处理页面内容。 但是我发现了一个问题——那一刻没有页面内容,因为它是由JavaScript稍后生成的。

我试图通过使用 Navigate 方法和必须调用我的 JavaScript 函数来调用自己,但没有成功。 我用关键字搜索了 , , 并没有找到有用的结果。

感谢您的建议。

编辑1: 创建一个新线程并将指向 this 的指针传递给它在开发环境中工作正常,但会导致实际系统崩溃。

编辑2: 今天的解决方法 - IE 工具栏按钮 IOleCommandTarget::Exec 方法调用页面解析代码。但它需要用户交互。

编辑3: 新解决方法 - 在 FinalConstruct 中,我创建了自己的窗口。如果模板搜索失败,我会创建新的线程,它会休眠几秒钟并向该窗口发送WM_USER 消息。窗口过程调用页面解析器。

最佳答案

只是为了关闭这个问题。今天的解决方案是处理大部分 IE 可以触发的事件:

BEGIN_SINK_MAP(CVIEBHO)
    SINK_ENTRY_EX(1071, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE,   CVIEBHO::OnDocumentComplete)
    SINK_ENTRY_EX(1071, DIID_DWebBrowserEvents2, DISPID_DOWNLOADCOMPLETE,   CVIEBHO::OnDownloadComplete)
    SINK_ENTRY_EX(1071, DIID_DWebBrowserEvents2, DISPID_ONQUIT,             CVIEBHO::OnQuit)
    SINK_ENTRY_EX(1071, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2,    CVIEBHO::BeforeNavigate2)
    SINK_ENTRY_EX(1071, DIID_DWebBrowserEvents2, DISPID_NAVIGATECOMPLETE2,  CVIEBHO::NavigateComplete2)
    SINK_ENTRY_EX(1071, DIID_DWebBrowserEvents2, DISPID_PROPERTYCHANGE,     CVIEBHO::PropertyChange)
    SINK_ENTRY_EX(1071, DIID_DWebBrowserEvents2, DISPID_PROGRESSCHANGE,     CVIEBHO::ProgressChange)
END_SINK_MAP()

在我的代码中,我检查当前页面可能发生的事件类型的 URL,并在该事件处理程序中进行解析。

关于javascript - 在 BHO 中处理 JavaScript 生成的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26865847/

相关文章:

javascript - Highcharts 堆栈组列的正确 x 轴

javascript - 在 IE8、IE9 和 IE10 中使用 javascript 更改元素类名称时可能出现错误

javascript - jQuery 选择菜单验证器适用于 FF 和 Chrome,但不适用于 IE

c# - 如果我想在运行 log4net 方法时运行 csc.exe,Internet Explorer 会提示我

windows-8 - 适用于 IE 10 WIndows 8 64 示例的浏览器帮助程序对象

window - 在 IE 浏览器帮助程序对象中,强制 IWebBrowser2.Navigate2 在新窗口中打开新选项卡

javascript - 如何将 JavaScript 转换为 jQuery

javascript - Angular dom 中的上下文是如何维护的

javascript - 从多个表单中选择的下拉列表

javascript - D3.js 图表 : Labels (<text> Tags) Not Showing On IE11