我需要在我的应用程序中使用Web浏览器,因为它保留了员工的重复性任务,但是在点击锚点后,javascript会在IE中打开一个新窗口.如何告诉Web浏览器控件“打开新窗口”我想要打开它?例如在其他Web浏览器控件中?
解决方法
退房:
proof-of-concept of .NET System.Windows.Forms.WebBrowser module using源代码
我对这种控制的经验给了我一个愿景,即这个问题可以在接下来的步骤中解决:
>总是取消NewWindow活动
>点击all links点击
>但并非所有链接都可以通过这种方式缓存,因此我决定解析所有标记< a>手动于Document Loading Completion
>一般来说,这种控制非常差,并且是故意由微软做出的.虽然在Webrowser.Document.HtmlDocument和命名空间MSHTML之间有强大的工具集
>它使用的一个例子是HtmlElement.DomElement
foreach(HtmlElement tag in webBrowser.Document.All) { switch (tag.TagName.ToUpper) { case "A": { tag.MouseUp += new HtmlElementEventHandler(link_MouseUp); break; } } } void link_MouseUp(object sender,HtmlElementEventArgs e) { HtmlElement link = (HtmlElement)sender; mshtml.HTMLAnchorElementClass a = (mshtml.HTMLAnchorElementClass)link.DomElement; switch (e.MouseButtonsPressed) { case MouseButtons.Left: { if ((a.target != null && a.target.ToLower() == "_blank") || e.ShiftKeyPressed || e.MouseButtonsPressed == MouseButtons.Middle) { // add new tab } else { // open in current tab } break; } case MouseButtons.Right: { // show context menu break; } } }