Любопытное всплывающее поведение при использовании класса WebBrowser - PullRequest
1 голос
/ 21 октября 2008

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

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

ПРИМЕЧАНИЕ: я новичок в C #, поэтому, пожалуйста, примите это во внимание при ответе.

Ответы [ 2 ]

4 голосов
/ 21 октября 2008

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

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

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

1 голос
/ 21 октября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...