我正在尝试使用SpicIE为Internet Explorer编写一个小插件。 我理解如何使用以下代码响应事件:
this.OnDocumentComplete += new SpicIE.Common.WebBrowserEvent_DocumentComplete(SamplePlugin_OnDocumentComplete);
this.OnNavigateComplete += new SpicIE.Common.WebBrowserEvent_NavigateComplete2(SamplePlugin_OnNavigateComplete);
this.OnBeforeNavigate += new SpicIE.Common.WebBrowserEvent_BeforeNavigate2(SamplePlugin_OnBeforeNavigate);
当调用事件处理程序时,我可以看到事件的当前URL。 但是,为每个webbrowser对象事件调用事件处理程序,包括iframe。我只需要更改地址栏中的URL(您键入要导航到的URL的位置)时才需要响应。
如何判断事件是否属于顶部框架\ webbrowser?有没有办法使用 pDisp 对象或其他东西来获取地址栏网址?
答案 0 :(得分:0)
添加对 Interop.SHDocVw 的引用后,我可以看看:
HostInstance.BrowserRef.LocationURL
多次调用事件处理程序(因为iframe),但每次都可以检查新地址是否与旧地址不同。
HostInstance 在插件构造函数中设置,就像大多数示例一样 - 不要忘记验证 HostInstance 不为空。