如何解决webBrowser新开页面问题?
问题:
页面中的链接target=_blank 或 window.open()引起的页面新开,直接就用ie打开了,我想就在当前webBrowser中显示新页。
如何解决?令,如果是ie新开,新开页面会丢失Session吗?
谢谢!分不够,再加!在线等!!!

解决方案 »

  1.   

    ASP.NET打开新窗口方法一:Response.Write("<script language=\"javascript\">window.open('aaa.aspx','新窗口,\"toolbar=yes,location=no,directories=yes,status=yes,menubar=yes,resizable=yes,scrollbars=yes\");</script>");这种方式代码每次是生成在页面最顶端ASP.NET打开新窗口方法二:string strScript = "";
    strScript += "<script language=\"javascript\">\n";
    strScript += "window.open('aaa.aspx','新窗口,\"toolbar=yes,location=no,directories=yes,status=yes,menubar=yes,resizable=yes,scrollbars=yes\");\n";
    strScript += "location.href='index.html';";
    strScript += "</script>";网上抄的 不知道好用不
      

  2.   

    响应webbrowser的Navigating事件
    截取e.Url,然后将e.Cancel设为true以取消操作,然后将webbrowser直接导航至Url
      

  3.   

    用这个控件
    http://www.codeproject.com/KB/miscctrl/csEXWB.aspx有newwindow事件
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 
    http://feiyun0112.cnblogs.com/
      

  4.   

    to:lijunfeng 开玩笑,这不死循环了。应该是NewWindow才对!
      

  5.   

    Response.Write(" <script language=\"javascript\">window.open
    ('aaa.aspx','新窗口,\"toolbar=yes,location=no,directories=yes,
    status=yes,menubar=yes,resizable=yes,scrollbars=yes\"); 
      

  6.   

    使用NewWindow怎样获取链接的url呀?
      

  7.   

    http://support.microsoft.com/default.aspx/kb/815714/zh-tw
      

  8.   

    原样当然是死循环,加点控制语句可以避免的,另外可以通过e.TargetFrame判断是不是新开窗口
      

  9.   

    给你段delphi代码参考
    procedure TForm1.wbBrowserNewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: WordBool);
    begin
        try
          if Assigned(frmWB) then
            freeAndNil(frmWB);
          frmWB := TfrmOpenWb.Create(self);
          frmWB.Visible:=true;
          ppDisp :=  frmWB.WebBrowser1.ControlInterface;
          Cancel:=false;
        except
        end;
    end;
      

  10.   

    而且可以负责任的告诉你,只要你的进程没关闭,即使webbrowser关闭了,你的session仍然有效。
      

  11.   

    12楼代码是新开一个自定义的含有WebBrowser控件的窗体显示新页面
      

  12.   

    private void webBrowser_NewWindow(object sender, CancelEventArgs e)
            {
                e.Cancel = true;
                
                webBrowser.Navigate(webBrowser.Document.ActiveElement.GetAttribute("href"));
                
            }
      

  13.   

    1.在当前webbrowser打开参考蒋晟的这个控件:http://blog.csdn.net/jiangsheng/archive/2004/01/13/3792.aspx
    2.新窗口中,session不会丢失
      

  14.   

    蒋晟的那个比较麻烦,看看webbrowser的NewWindow2事件
      

  15.   

            private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
            {
                e.Cancel = true; //取消使用系统的IE打开超链接
                form2.webBrowser1.Navigate((sender as WebBrowser).Document.ActiveElement.GetAttribute("href"));
    //form2是自己设计的含有webBrowser1控件的窗体,参数就是你点击的超链接的字符串URL
            }
      

  16.   

    to:gogogo您的方法挺好。
    我用SHDocVw.WebBrowser_V1的NewWindow 解决了谢谢!
      

  17.   

    谁有没有方法解决网页中的alert消息框,不让显示并能捕捉到alert的内容更好!分可以单结,100分,我另开帖来结分便是!
      

  18.   

    在WebBrowser控件中阻止alert,confirm对话框
    //禁用目标window的confirm、alert等对话框。
            private void disableConfirm()
            {
                HtmlDocument doc = webBrowser1.Document.Window.Frames["mainFrame"].Document;
                //框架结构中,必须正确的指定目标框架            IHTMLWindow2 win = (IHTMLWindow2)doc.Window.DomWindow;            string s = @"function confirm() {";
                s += @"return true;";
                s += @"}";            s += @"function alert() {}";            win.execScript(s, "javascript");        }
    这个方法是自己写confirm alert方法把原文档的方法替换掉的方式
      

  19.   


    private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {
          IHTMLWindow2 win = (IHTMLWindow2)webBrowser1.Document.Window.DomWindow;
          string s = "window.alert = null;\r\nwindow.confirm = null;\r\nwindow.open = null;\r\nwindow.showModalDialog = null;";
          win.execScript(s, "javascript");
    }
      

  20.   

    谁有没有方法解决网页中的alert消息框,不让显示并能捕捉到alert的内容更好!谁还有更好解决方法!