在BHO(IE9)中从未提出的Domcontentload
DOMContentLoaded never raised in BHO (IE9)
我想在bho for Internet Explorer 9中收听DOMContentLoaded
事件9.我已经将事件附加到NavigateComplete2事件中的IHTMLDocument3
,没有成功(附件都很好,但是事件是事件不触发)。
我已经做了类似的onload:已将事件" Onload"附加到IHTMLWindow3
上。在这种情况下它可以正常工作。
我知道当NavigateComplete2触发时,DOM并未完全加载,因为我当时无法访问页面的主体。
如何在BHO中捕获DOMContentLoaded
?
我不确定为什么DOMContentLoaded
不发射。最合乎逻辑的解释是,当您处理NavigateComplete2
时,它已经触发了,尽管在这种情况下您无法访问整个DOM有点奇怪。处理程序内部文档的readyState
是什么?
无论如何,一个更好的解决方案可能是为OnReadyStateChange
注册一个水槽,类似的东西:
class CDocumentSink :
public IDispEventImpl<1, CDocumentSink, &DIID_HTMLDocumentEvents2, &LIBID_MSHTML, 4, 0>
{
public:
BEGIN_SINK_MAP(CDocumentSink)
SINK_ENTRY_EX(1, DIID_HTMLDocumentEvents2, DISPID_READYSTATECHANGE, OnReadyStateChange)
END_SINK_MAP()
STDMETHOD_(void, OnReadyStateChange)(IHTMLEventObj* ev);
};
您可以将其作为现有的一部分或单独的类实现(如上面的示例中)。当readyState
为4(完成)时,DOM应该在那里并且可用。
相关文章:
- 在BHO(IE9)中从未提出的Domcontentload
- (IE BHO)从BeforeNavigate2事件获取IWebBrowser2
- 编写面向 IE7 的 BHO
- BHO 在每个页面上执行 JavaScript
- 从 BHO 向 CAxWindow 上的 JS 公开方法(C++ )
- BHO和IE浏览器 11.
- 如何启动 BHO(浏览器助手对象)编程
- IE9无法在BHO中的HTMLWindow2上启动onscroll事件
- 使用 approveextensionmigration 实现自动bho功能的安全性
- 解码编码的俄罗斯字符从url到实际字符在BHO
- Internet Explorer BHO,写入注册表和管理权限
- IE BHO为每个标签加载两次
- 从IE工具栏按钮调用BHO
- BHO不能更改注册表值
- Internet Explorer是否为BHO提供了通过HTTP下载文件的功能
- C++BHO(IE插件)问题
- BHO HtmlEventObject crashes
- 为什么在BHO中CreateDialog失败,错误码为5
- Internet Explorer BHO检查站点的多实例