.net在IE

时间:2018-04-23 11:24:00

标签: html hyperlink webbrowser-control

我的应用程序中有一个Web浏览器控件,其中包含以下链接:

<html>
<body>
<a href="http://www.google.com" target="abc">test</a>
</body>
</html>

每次点击此链接,都会在IE的新窗口中打开,而不是新的Tab。我试着直接在IE中加载这个html - 然后它正确地在新标签中打开。  我还配置了IE设置以在新选项卡中打开链接而不是新窗口。

有人可以帮助我在新标签页中加载来自网络浏览器控件的链接吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果您已经指定是使用Winforms还是WPF进行Web浏览器控制,甚至使用的是哪种语言(C#,VB,F#等),那将会很有帮助,但假设您使用的是winforms和C#此解决方案会工作的。

您只需取消新窗口事件并自行处理导航和标签内容。

这是一个完整的例子。

using System.ComponentModel;
using System.Windows.Forms;

namespace stackoverflow2
{

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.webBrowser1.NewWindow += WebBrowser1_NewWindow;
            this.webBrowser1.Navigated += Wb_Navigated;
            this.webBrowser1.DocumentText=
             "<html>"+
             "<head><title>Title</title></head>"+
             "<body>"+
             "<a href = 'http://www.google.com' target = 'abc' > test </a>"+
             "</body>"+
             "</html>";
        }
        private void WebBrowser1_NewWindow(object sender, CancelEventArgs e)
        {
            e.Cancel = true; //stop normal new window activity

            //get the url you were trying to navigate to
            var url= webBrowser1.Document.ActiveElement.GetAttribute("href");

            //set up the tabs
            TabPage tp = new TabPage();
            var wb = new WebBrowser();
            wb.Navigated += Wb_Navigated;
            wb.Size = this.webBrowser1.Size;
            tp.Controls.Add(wb);
            wb.Navigate(url);
            this.tabControl1.Controls.Add(tp);
            tabControl1.SelectedTab = tp;
        }

        private void Wb_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            tabControl1.SelectedTab.Text = (sender as WebBrowser).DocumentTitle;
        }
    }
}