Как отменить сплывающие окно в Webbrowser

Тема в разделе "Visual Basic", создана пользователем zazaza, 15 май 2011.

  1. zazaza

    zazaza Гость

    Всем привет

    Проблема уже начинает становиться всё серьёзнее.
    В GOOGle.com какойто кризис. все коды то на C# C++ Delphi на VB.NET нету примеров а мне ка краз на VB.NET нужно

    Вообщем есть WEBBROWSER компонент.
    Я програмно осуществляю клик по ссылке внутри компонента WEBBROWSER
    Начинает открывать Окно новое INTERNET EXPLORER с этой ссылкой.

    Как зделать так что бы окно это открылось в WEBBROWSER


    Пока единственное что я зделал так это запретил открытие нового окна.


    Код (LotusScript):
     Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
    e.Cancel = True
    End Sub

    Но мне нужно что бы окно открылось не за пределами моей формы а в самом WEBBROWSER
     
  2. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Есть подозрение, что указанная ссылка представляет собой что-то типа:
    Код (Text):
    <a href="..." target="_blank">...</a>
    , т.е. всегда открывается в новом окне.
    Можно поступить так:
    - найти указанную ссылку в WebBrowserControl'е (webBrowser.Document.All["<id ссылки>"] или как-то более правильно);
    - вытащить адрес, на который ссылка ссылается, из ее аттрибута href;
    - отправить WebBrowserControl по этому адресу, задав значение свойству Url.
     
  3. zazaza

    zazaza Гость



    Спасибо за ответ но это уже слишком поздно. Я вчер ане выдержал и весь день обдумывал как решить проблему со сплывающим окном. В итоге я не нашёл верного пути как запретить всплывающее окно так как посчитал что код на сайте RUTUbe.ru изначально "КАК ТЫ НАПИСАЛ ВВЕРХУ" имеет задачу "открывать эту ссылку в новом окне".

    Програмно я бы со своим уровнем знаний не смог бы просто изменить структуру кода что бы в нвом окне ссылка не грузилась..

    Поэтому решил обойти это другим способом..

    примерно так :
    Код (LotusScript):
        Dim urldb As String
    Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
    For Each webpageelement As HtmlElement In allelements

    If webpageelement.GetAttribute("title") = "видео" Then

    urldb = webpageelement.GetAttribute("href").ToString()

    End If
    WebBrowser1.Navigate(urldb)
    Next
    Таким образом получается... :
    1 - на странице с результатом идёт поиск определённой строки.
    2- Если найдено совпадение
    Код (LotusScript):
     webpageelement.GetAttribute("title") = "видео"
    тогда в переменную URLDB записывается ссылка из полученного атрибута href

    ну а дальее используя эту переменую URLDB zя просто подставляю в свойство NAVIGATE

    Код (LotusScript):
             WebBrowser1.Navigate(urldb)

    Знаю что профессионализмом тут и не пахнет. Я просто учусь. А это мне надо что бы не только укрепить все знания в кучу но и наконец то избавить себя от рутинной работы набирать всё руками.
    :ph34r:

    PS: Обычно на мои темы не кто не отвечает когда дело касается WEBBROWSER но я хотел бы что бы ты ответил в моей следующей теме потому что её я реально не могу решашить. перепробовал всё что знал
     
  4. sanfoto

    sanfoto New Member

    Регистрация:
    9 июл 2014
    Сообщения:
    1
    Симпатии:
    0
    тема старая но обновим... для других ищущих))

    тоже была такая проблемма, немог получить URL нового окна вызываемого из Flash (перерыл все русскоязычные форумы... все решения слишком громозкие..классы обертки и т.п.)

    Решение простое оказалось:
    после инициализации объекта WebBrowser надо вставить такой код (например в Sub FormLoad)
    Код Visual Basic .NET

    Код (LotusScript):
    axBrowser = CType(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser)
    AddHandler axBrowser.NewWindow3, AddressOf WebBrowser1_NewWindow3
    и вставить в свой код процедуру этого события "NewWindow3"

    Код (LotusScript):
    Private Sub WebBrowser1_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, dwFlags As UInteger, bstrUrlContext As String, bstrUrl As String)
    MsgBox(bstrUrl) ' а вот и наш желанный адрес ссылки)))
    'Ваш код
    '.............
    End Sub
    ПС: Так можно нашлепать очень много разных событий имеющихся у "axBrowser",
    кстати побочный эффект приведенного кода... перестает срабатывать стандартное для компонета "WebBrouser" событие "NewWindow" )))
     
Загрузка...

Поделиться этой страницей