Использование TWebBrowser в Delphi: как заставить открывать ссылки в браузере по умолчанию
При разработке приложений на Delphi часто возникает необходимость встроить веб-компоненты для отображения контента из интернета. Одним из таких компонентов является TWebBrowser, который позволяет отображать веб-страницы прямо внутри приложения. Однако, TWebBrowser по умолчанию использует Internet Explorer для отображения ссылок, что может быть неудобно для пользователей, предпочитающих другие браузеры.
Проблема
Пользователи вашего приложения видят баннер, загружаемый из интернета, в контроле TWebBrowser. Этот баннер — это HTML-страница с изображением, и при клике на изображение пользователь переходит на страницу промоакции. Проблема заключается в том, что ссылка открывается в Internet Explorer, а не в браузере по умолчанию пользователя.
Решение
Для решения этой проблемы можно использовать события NewWindow2 или BeforeNavigate2 компонента TWebBrowser. Вот пример кода, использующего событие BeforeNavigate2:
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject; pDisp: IDispatch; var URL: Variant; var Flags: Variant; var TargetFrameName: Variant; var PostData: Variant; var Headers: Variant; var Cancel: WordBool);
begin
if IsURLToLaunch(URL) then
begin
Cancel := True;
WebBrowser1.Stop;
ShellExecute(0, nil, PChar(URL), nil, nil, SW_SHOWNORMAL);
end;
end;
Функция IsURLToLaunch должна быть определена для проверки, является ли URL ссылкой, которую необходимо открыть во внешнем браузере. Это может быть простая проверка на определенный домен или паттерн URL.
Альтернативный подход
Если вам нужно более точное управление, вы можете использовать событие OnDocumentComplete, чтобы напрямую назначить обработчик события клика на гиперссылку изображения. В этом обработчике вы можете извлечь текущий URL ссылки и открыть его с помощью ShellExecute(), когда ссылка будет кликнута.
Применение в Firemonkey
Для мобильных приложений Firemonkey, которые используют TWebBrowser, подход с BeforeNavigate2 не будет работать, так как Firemonkey использует другой механизм отображения веб-контента. Вам потребуется найти соответствующий аналог события для вашей платформы.
Заключение
Использование TWebBrowser в Delphi может быть мощным инструментом для встраивания веб-контента, но иногда требует дополнительной настройки для соответствия предпочтениям пользователя. Открытие ссылок в браузере по умолчанию — это одна из таких настройек, которую можно реализовать, используя события компонента TWebBrowser.
При разработке на Delphi с использованием компонента `TWebBrowser` пользователи столкнулись с тем, что ссылки, кликаемые в веб-контенте, открываются в Internet Explorer вместо браузера по умолчанию на их устройстве, и рассматриваются способ
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.