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

这段代码展示了如何使用C#处理`System.Windows.Forms.WebBrowser`控件中遇到的`window.open`新开窗口的问题。通过注册事件监听器和修改JavaScript,将新开窗口的逻辑控制在当前页面内,避免了新窗口的弹出,并提供了自定义的新开窗口处理方法。
摘要由CSDN通过智能技术生成
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;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值