C# WebBrowser 取 window.open 新窗口 url的方法

System.Windows.Forms.WebBrowser wb;       //WebBrowser 对象

            wb.NewWindow += new CancelEventHandler(wb_NewWindow);
            wb.DocumentCompleted += delegate
            {               
                #region 处理window.open新开窗口的问题

                System.Windows.Forms.HtmlElement html = wb.Document.CreateElement("div");
                html.InnerHtml += "<a id=\"popLink\" href=\"\" target=\"_blank\" style=\"display:none;\"></a>";
                wb.Document.Body.AppendChild(html);

                string jsHtml = "";
                jsHtml += "window.open=function(url, title, prop)  ";
                jsHtml += "{";
                jsHtml += "obj = document.getElementById('popLink');  ";
                jsHtml += "obj.style.display='block';  ";
                jsHtml += "obj.href=url;  ";
                jsHtml += "obj.focus();  ";
                jsHtml += "obj.click();  ";
                jsHtml += "obj.style.display='none'  ";
                jsHtml += "} ";
                mshtml.IHTMLDocument2 doc = wb.Document.DomDocument as mshtml.IHTMLDocument2;
                mshtml.IHTMLWindow2 win = doc.parentWindow as mshtml.IHTMLWindow2;
                win.execScript(jsHtml, "javascript");

                #endregion

            };


        static void wb_NewWindow(object sender, CancelEventArgs e)
        {
            System.Windows.Forms.WebBrowser web = (System.Windows.Forms.WebBrowser)sender;
            string newUrl = web.StatusText.ToString();
            showNewWinWithUrlInner(null, newUrl, "", 800, 600, true, false);//自己取到新窗口url后自行处理
            e.Cancel = true;
        }

  

posted @ 2020-09-18 09:58  左正  阅读(1211)  评论(0编辑  收藏  举报