经过大量的挖掘,我已经设法用SHDocVw.dll在我的2个表单之间共享会话。我有一个Main窗体和一个Popup窗体,每个窗体都包含一个WebBrowser控件。
我的问题是:如何处理window.close javascript事件以关闭弹出窗体?
我认为我的语法正确,但我无法实现。
主表格(webbrowser Navigator):
SHDocVw.WebBrowser nativeBrowser;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
nativeBrowser = (SHDocVw.WebBrowser)Navigator.ActiveXInstance;
nativeBrowser.NewWindow2 += nativeBrowser_NewWindow2;
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
nativeBrowser.NewWindow2 -= nativeBrowser_NewWindow2;
base.OnFormClosing(e);
}
void nativeBrowser_NewWindow2(ref object ppDisp, ref bool Cancel)
{
var popup = new Form3();
popup.Show(this);
ppDisp = popup.webBrowser1.ActiveXInstance;
}
弹出表格
public Form3()
{
InitializeComponent();
}
public WebBrowser Browser
{
get { return webBrowser1; }
}
我想我必须在弹出代码中添加类似的内容:
SHDocVw.WebBrowser nativeBrowser;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
nativeBrowser = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
nativeBrowser.WindowClosing += nativeBrowser_closing;
}
protected void nativeBrowser_closing(bool IsChildWindow, ref bool Cancel)
{
this.Close();
}
但是当我声明SHDocVw.WebBrowser nativeBrowser
时,它会打开一个新的IE实例,而不是绑定到当前的实例。
有人可以帮帮我:)?