Любопытное поведение всплывающих окон при использовании класса WebBrowser

Мое приложение C# включает встроенный веб-браузер, что стало возможным благодаря System.Windows.Forms.WebBrowser. Пользователи могут переходить на веб-сайты с помощью приложения, однако, когда они сталкиваются со страницей, содержащей всплывающее окно, всплывающее окно открывается Internet Explorer.

Кто-нибудь знает, как подавить это поведение?

ПРИМЕЧАНИЕ. Я новичок в C#, поэтому при ответе примите это во внимание.


person Huuuze    schedule 20.10.2008    source источник


Ответы (2)


Вы хотите активно блокировать всплывающие окна или обрабатывать их в своем приложении? Если вы хотите настроить блокировку, вам придется реализовать интерфейс DWebBrowserEvents2, в частности Метод NewWindow3. Метод NewWindow3 имеет специальные функции для блокировки всплывающих окон (т. е. установка параметра Cancel в значение true). Эти методы также позволят вам показать свое собственное окно, если вы хотите, хотя вам придется предоставить свою собственную форму для размещения еще одного веб-браузера.

Если вы хотите увидеть реальный исходный код C#, предоставляющий расширенные функции с помощью элемента управления WebBrowser, я должен сказать, что эта статья на CodeProject предоставила почти все, что я знаю об элементе управления WebBrowser. Обязательно скачайте исходник!

@Kramii прав, вы также можете использовать событие NewWindow2 для предотвращения всплывающего окна. NewWindow3 предоставляет дополнительные параметры, если вы хотите проверить URL-адрес или другие данные о переходе, чтобы фактически иногда блокировать, а иногда и обрабатывать всплывающее окно самостоятельно.

person David Mohundro    schedule 21.10.2008

IIRC вы можете перехватить событие NewWindow2 в элементе управления WebBrowser и установить Cancel = true, чтобы предотвратить всплывающее окно.

Эта статья может помочь:

http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx#GoalBlock

person Kramii    schedule 21.10.2008