我的应用程序中有一个Web浏览器控件,其中包含以下链接:
<html>
<body>
<a href="http://www.google.com" target="abc">test</a>
</body>
</html>
每次点击此链接,都会在IE的新窗口中打开,而不是新的Tab。我试着直接在IE中加载这个html - 然后它正确地在新标签中打开。 我还配置了IE设置以在新选项卡中打开链接而不是新窗口。
有人可以帮助我在新标签页中加载来自网络浏览器控件的链接吗? 谢谢!
答案 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;
}
}
}