system.windows.forms.webbrowser里怎么解决网页中window.open和window.close问题:
一个网页是先打开个新的网页,关掉自己。
我想做个浏览器,最好在是在这个webbrowser里直接打开新网页。
newwindow时最好是还能在本form里显示,不在IE里打开,最好也不要new form。
close最好不关掉窗口。

解决方案 »

  1.   

    容易的,在NewWindow2事件中处理一下行了
    AxSHDocVw.AxWebBrowser _axWebBrowser=CreateNewWebBrowser();//这是我自定义函数
    e.ppDisp=_axWebBrowser.Application;
    _axWebBrowser.RegisterAsBrowser=true;
    不过还有个变通方法,没上面的好:
    private void WB_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
    {
    ie=new SHDocVw.InternetExplorer();
    ie.RegisterAsBrowser=true;
    e.ppDisp=ie;
    ie.DownloadBegin+=new DWebBrowserEvents2_DownloadBeginEventHandler(ie_downloadBegin);
    } private void ie_downloadBegin()
    {
    if(ie!=null)
    {
    string strURL=((HTMLDocument)ie.Document).url;
    ie.Quit();
    object o=null;
    WB.Navigate(strURL,ref o,ref o,ref o,ref o);
    }
    ie=null;
    }
    这方法不好,不过可以实现你的要求,最早我就用这第二种方法
      

  2.   

    第二种方法将所有window.open打开的网页用一个浏览器(转到)打开,第一种方法好,和IE一样,window.open打开的网页用新实例打开
      

  3.   

    你说的原来的webbrowser控件,在VS2005里是system.windows.forms.webbrowser,这个控件的NewWindow事件不一样啊。e.ppDisp都没有。
      

  4.   

    高手们,指点一下啊。主要是我的一个Windows程序用webbrowser控件在访问一个网页时,这个网页先用window.open打开一个新窗口,如果用IE打开则丢失session,打开新窗口后还调用了window.close。我现在用vs2005里的system.widnows.forms.webbrowser控件。大家给我出出注意啊。
      

  5.   

    去vb版问问,我记得WebBrower 有个数据可以设置在webbrowser里面打开的,至于session 能不能保留就不知道了。
      

  6.   

    private void dy_Load(object sender, EventArgs e)
            {
                SHDocVw.WebBrowser g;
                g = ((SHDocVw.WebBrowser)(webBrowser1.ActiveXInstance));
                g.NewWindow3 += NewWindow3;       
             
            }public void NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)
            {
                Cancel = false;
                ((SHDocVw.WebBrowser)(webBrowser1.ActiveXInstance)).RegisterAsBrowser = true;
                dy gg = new dy();
                ppDisp = gg.webBrowser1.ActiveXInstance;
                gg.Show();
            }