Есть два способа обойти это.Оба метода начинаются с захвата события click и последующего определения, был ли нажат элемент «a».
Метод 1 просто получает URL, отменяет щелчок и открывает новую вкладку.Открытие новой вкладки может быть достигнуто простым созданием нового элемента управления WebBrowser в нужном месте.
Метод 2 просто удаляет _blank
из target
, чтобы страница открывалась в текущем браузере, а не появляласьдругое окно браузера.
private void Go(string url)
{
webBrowser1.Navigate(url);
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.Click += new HtmlElementEventHandler(Document_Click);
}
void Document_Click(object sender, HtmlElementEventArgs e)
{
HtmlElement ele = webBrowser1.Document.GetElementFromPoint(e.MousePosition);
while (ele != null)
{
if (ele.TagName.ToLower() == "a")
{
// METHOD-1
// Use the url to open a new tab
string url = ele.GetAttribute("href");
// TODO: open the new tab
e.ReturnValue = false;
// METHOD-2
// Use this to make it navigate to the new URL on the current browser/tab
ele.SetAttribute("target", "_self");
}
ele = ele.Parent;
}
}
Однако учтите, что эти методы не препятствуют открытию окон браузера за пределами приложения через JavaScript.