当前位置:  开发笔记 > 编程语言 > 正文

如何强制Web浏览器控件始终在同一窗口中打开网页?

如何解决《如何强制Web浏览器控件始终在同一窗口中打开网页?》经验,为你挑选了2个好方法。

我需要在我的应用程序中使用Web浏览器,因为它保留了员工的重复性任务,但是在点击锚点后,javascript会在IE中打开一个新窗口.如何告诉Web浏览器控件"打开新窗口"我希望它打开?例如在其他Web浏览器控件中?



1> 小智..:

我找到了一个有效的简单解决方案.

private void WebBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e) {
    e.Cancel = true;
    WebBrowser1.Navigate(WebBrowser1.StatusText);
}



2> abatishchev..:

查看:使用源代码的.NET System.Windows.Forms.WebBrowser模块的概念验证


我对这种控制的经验给了我一个愿景,即这个问题可以在接下来的步骤中解决:

    总是取消NewWindow活动

    抓住所有链接点击

    但并非所有链接都可以通过这种方式缓存,因此我决定在文档加载完成时手动解析所有标记

    一般来说,这种控制非常差,并且是故意由微软做出的.虽然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;
        }
      }
    }
    

在第一个链接中查看更多信息,这是主窗口的源代码,那里有很多不同的操作!

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有