Здравствуйте.
Существует очень большая проблема и она не даёт мне покоя. Итак:
Есть TabControl с WebBrowser'ом на каждой закладке. При открытии окон в том же окне- всё ок, но когда окно открывается в новом (открыть в новой вкладке), то тут начинаются большие проблемы. Кое-как решил этот вопрос следующим кодом:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElementCollection links = this.webBrowser1.Document.Links;
foreach (HtmlElement var in links)
{
var.AttachEventHandler("onclick", LinkClicked);
}
}
private void LinkClicked(object sender, EventArgs e)
{
HtmlElement link = this.webBrowser1.Document.ActiveElement;
url = link.GetAttribute("href");
}
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
//Prevent new window being opened in IE.
e.Cancel = true;
OpenLinkInOwnWindow w = new OpenLinkInOwnWindow();
w.Show();
w.Navigate(url);
}
Дальше больше- появились ссылки, которые находятся во фреймах и так же требуют к себе открытия в новой вкладке. Тоже решил это посредством перебора всех фреймов страницы, и получением активного элемента в одном из них- не очень красиво, но жить можно.
Теперь оказывается существует ещё способ открытия нового окна через JavaScript на всевозможных элементах (картинки, кнопки и т.д.)- это вообще беда...
Вопрос: Неужели нельзя абстрагироваться от всех этих условий и отлавливания каждого чиха и пыха и где-то получить адрес страницы, которая должна открываться в новом окне и уже её открывать у себя в новой вкладке?
Вопрос очень важный и серьёзный для меня, если чем-то смогу помочь- помогу. Спасибо.