Как отменить сплывающие окно в 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
 
L

LuMee

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

zazaza

Есть подозрение, что указанная ссылка представляет собой что-то типа:
Код:
<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 но я хотел бы что бы ты ответил в моей следующей теме потому что её я реально не могу решашить. перепробовал всё что знал
 
S

sanfoto

тема старая но обновим... для других ищущих))

тоже была такая проблемма, немог получить 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" )))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!