Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Перехват всплывающих окон в TEdgeBrowser: перенаправление на пользовательскую форму

Delphi , Интернет и Сети , Браузер

В современном веб-разработке часто возникает необходимость управления поведением браузера, в том числе и перехвата всплывающих окон. Рассмотрим, как это можно сделать, используя компонент TEdgeBrowser в среде разработки Delphi.

Проблема

Разработчики, использующие TEdgeBrowser, сталкиваются с необходимостью перехвата событий, связанных с открытием новых окон. В частности, событие OnNewWindowRequested позволяет определить, что браузер готовится открыть новое окно, но возникает вопрос: как можно перенаправить этот вывод на собственную форму с вторым компонентом TEdgeBrowser?

Решение

Событие OnNewWindowRequested в TEdgeBrowser предоставляет параметр Args типа TNewWindowRequestedEventArgs, который, в свою очередь, реализует интерфейс ICoreWebView2NewWindowRequestedEventArgs из Edge WebView2. Для перенаправления на новое окно можно использовать метод Set_NewWindow(), передав ему интерфейс желаемого браузера, который можно получить через свойство DefaultInterface компонента TEdgeBrowser.

procedure TForm1.EdgeBrowser1NewWindowRequested(Sender: TObject; Args: TNewWindowRequestedEventArgs);
begin
  Args.ArgsInterface.Set_NewWindow(EdgeBrowser2.DefaultInterface);
end;

Пример кода

В приведенном выше коде мы создаем обработчик события OnNewWindowRequested для компонента TEdgeBrowser1. В этом обработчике мы перехватываем событие открытия нового окна и перенаправляем его на компонент TEdgeBrowser2, который размещен на пользовательской форме.

// Предположим, что EdgeBrowser2 уже существует на вашей форме
procedure TForm1.EdgeBrowser1NewWindowRequested(Sender: TObject; Args: TNewWindowRequestedEventArgs);
begin
  Args.ArgsInterface.Set_NewWindow(EdgeBrowser2.DefaultInterface); // EdgeBrowser2 - это ваш второй компонент TEdgeBrowser
end;

Не забудьте подключить обработчик событий к вашему TEdgeBrowser1, чтобы он активировался при попытке открыть новое окно.

Важные замечания

Некоторые пользователи сталкивались с трудностями, связанными с версиями компонентов. Убедитесь, что используете актуальные версии библиотек и компонентов, совместимых с вашей версией Delphi (например, Delphi 10.4.1 Sydney). Также важно правильно обращаться к свойствам и методам компонентов.

Успешный исход

Некоторые разработчики сообщали о том, что метод put_NewWindow() не работал для них, но использование метода Set_NewWindow() помогло решить проблему. В случае возникновения трудностей, рекомендуется тщательно проверить код на предмет ошибок и убедиться, что все ссылки на компоненты и их свойства корректны.

Альтернативный способ

Также стоит отметить, что существуют альтернативные подходы, например, использование события EdgeBrowser1CreateWebViewCompleted для настройки контекстного меню браузера. Однако это не прямо относится к перенаправлению окон, а больше к настройке поведения уже существующего окна браузера.

var
  s: ICoreWebView2Settings;
begin
  Sender.DefaultInterface.Get_Settings(s);
  s.Set_AreDefaultContextMenusEnabled(False);
end;

Используйте данный код осторожно, поскольку он влияет на стандартное поведение браузера, и убедитесь, что это соответствует вашим требованиям и ожиданиям пользователя.

Создано по материалам из источника по ссылке.

Перехват всплывающих окон в TEdgeBrowser и их перенаправление на пользовательскую форму с помощью обработки события `OnNewWindowRequested` и использования метода `Set_NewWindow` для указания нового целевого браузера.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:48:36/0.00217604637146/0