【问题标题】:Process JavaScript-generated page in BHO在 BHO 中处理 JavaScript 生成的页面
【发布时间】:2018-10-19 16:01:00
【问题描述】:

我正在开发BHO,需要处理OnDocumentComplete 事件中的页面内容。 但是我发现了一个问题——当时没有页面内容,因为它是后来JavaScript生成的。

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

感谢您的任何建议。

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

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

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

【问题讨论】:

    标签: bho internet-explorer javascript javascript internet-explorer bho


    【解决方案1】:

    只是为了关闭问题。今天的解决方案是处理大部分可以被 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 巫婆类型的事件,并在此事件处理程序中进行解析。

    【讨论】:

      猜你喜欢
      • 2012-01-07
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 2012-02-16
      相关资源
      最近更新 更多