• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы zazaza
  • Дата начала Дата начала
Z

zazaza

Всем привет

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

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

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


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


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


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



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

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

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

примерно так :
Код:
	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- Если найдено совпадение
Код:
 webpageelement.GetAttribute("title") = "видео"
тогда в переменную URLDB записывается ссылка из полученного атрибута href

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

Код:
		 WebBrowser1.Navigate(urldb)


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

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

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

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

Код:
axBrowser = CType(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser)
AddHandler axBrowser.NewWindow3, AddressOf WebBrowser1_NewWindow3

и вставить в свой код процедуру этого события "NewWindow3"

Код:
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" )))
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab