C # веб-браузер навигации - PullRequest
1 голос
/ 10 мая 2011

У меня есть открытые браузеры в моем приложении, которые загружают данные с помощью веб-браузера по умолчанию.

//Set the function and display the browsers we're using (per screen)
browsers[index].Width = screens[index].Bounds.Width;
browsers[index].Height = screens[index].Bounds.Height;
browsers[index].Location = new System.Drawing.Point(screens[index].Bounds.X, screens[index].Bounds.Y);

browsers[index].Navigate(new Uri(lines[index]));
browsers[index].Show();

Теперь моя проблема заключается в том, что когда вы нажимаете ссылку на странице, она покидает мое приложение и открываетновый браузер полностью.Любой способ выйти из этого?

строк содержит массив URL-адресов, а браузеры - это массив веб-страниц для загрузки на разных экранах.

1 Ответ

3 голосов
/ 10 мая 2011

Если я не ошибаюсь, это происходит из-за 'TARGET = "_blank"', я бы попытался удалить это из тега до отображения содержимого.

private void Browser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
    var webBrowser = (WebBrowser)sender;
    if (webBrowser.Document != null)
    {
        foreach (HtmlElement tag in webBrowser.Document.All)
        {
            if (tag.Id == null)
            {
                tag.Id = String.Empty;
                switch (tag.TagName.ToUpper())
                {
                    case "A":
                    {
                        tag.MouseUp += new HtmlElementEventHandler(link_MouseUp);
                        break;
                    }
                }
            }
        }
    }
}


private void link_MouseUp(object sender, HtmlElementEventArgs e)
{
    var 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)
            {
                AddTab(a.href);
            }
            else
            {
                CurrentBrowser.TryNavigate(a.href);
            }
            break;
        }
        case MouseButtons.Right:
        {
            CurrentBrowser.ContextMenuStrip = null;
            var contextTag = new ContextTag();
            contextTag.Element = a;
            contextHtmlLink.Tag = contextTag;
            contextHtmlLink.Show(Cursor.Position);
            break;
        }
    }
}

Источник: /4630171/otkryt-novuy-veb-stranitsu-v-novoi-vkladke-v-elemente-upravleniya-webbrowser

...