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

Использование TEdgeBrowser в Delphi 10.4: Интеграция и вызов нативного кода из JavaScript

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

В современном мире разработки программного обеспечения, где безопасность и производительность играют ключевую роль, разработчики часто сталкиваются с необходимостью обновления используемых технологий. В частности, это касается компонентов для встраивания браузера в настольные приложения, написанные на Delphi. В данной статье мы рассмотрим, как использовать новый компонент TEdgeBrowser, представленный в Delphi 10.4, который базируется на Microsoft Edge и Chromium, для интеграции и вызова нативного кода из JavaScript.

Проблема

На данный момент в наших настольных приложениях используется компонент TWebBrowser для встраивания Internet Explorer. Для вызова кода на Delphi из JavaScript, выполняющегося на встроенной веб-странице, мы реализовали поддержку объекта window.external, как описано в этой статье.

Однако, в связи с рядом причин, нам необходимо перейти на использование современного браузера. Уже обновление до Delphi 10.4 позволяет нам использовать новый компонент TEdgeBrowser, который базируется на Chromium и Microsoft Edge. Вопрос заключается в том, возможно ли использовать window.external для TEdgeBrowser и как это сделать, или существует другой способ вызова нативного кода из JavaScript, выполняющегося на встроенной веб-странице.

Альтернативный ответ и комментарии

Использование TWebBrowser позволяет использовать режим эмуляции браузера для получения функциональности современного браузера, что может быть полезным в краткосрочной перспективе, учитывая, что новый компонент на основе Chromium Edge от Microsoft еще не был официально выпущен. Однако, учитывая, что наши приложения используются в критически важной инфраструктуре и что клиент из газовой промышленности требует перехода на Chromium по соображениям безопасности, а также сталкивается с проблемами сброса настроек эмуляции IE в реестре, мы ищем другое решение.

Компонент TEdgeBrowser и проект CEF4Delphi представляют интерес, но их реализация может оказаться сложной задачей. В качестве альтернативы было обнаружено, что TEdgeBrowser использует WebView2, с помощью которого можно зарегистрировать обработчик (handler) для приема вызовов JavaScript к window.chrome.webview.postMessage.

Подтвержденный ответ и примеры кода

После изучения документации, предоставленной в разделе "Getting started", было выяснено, что процесс настройки не так сложен, как может показаться на первый взгляд. Благодарность за помощь выражается TOndrej за предоставленный "Getting started" link, который помог разобраться в вопросе. Также было установлено, что решение работает с Microsoft Edge Beta (84.0.522.28), и нет необходимости использовать Canary, как описано в блоге Marco Cantu. Ожидается, что в скором времени решение будет работать и с официальной версией Microsoft Edge.

Вот примеры кода на Object Pascal (Delphi) и HTML, которые демонстрируют интеграцию и вызов нативного кода из JavaScript:

Delphi:

procedure TForm1.Button1Click(Sender: TObject);
begin
  EdgeBrowser1.Navigate(ExtractFilePath(ParamStr(0)) + 'index.html');
end;

procedure TForm1.EdgeBrowser1WebMessageReceived(Sender: TCustomEdgeBrowser; Args: TWebMessageReceivedEventArgs);
var
  Msg: PChar;
begin
  Args.ArgsInterface.Get_webMessageAsJson(Msg);
  MessageBox(Handle, Msg, PChar(EmptyStr), MB_OK);
end;

HTML:

<!DOCTYPE html>
<html>
<body>
    <p onclick="handleClick()">Click me</p>
    <script>
        function handleClick() {
            window.chrome.webview.postMessage({ data: 'Message from Edge Chromium', url: window.document.URL });
        }
    </script>
</body>
</html>

Переход на использование TEdgeBrowser в Delphi 10.4 открывает новые возможности для разработчиков, предоставляя современные технологии для встраивания браузера и интеграции с нативным кодом, что способствует повышению безопасности и производительности приложений.

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

Статья о переходе с использования старых компонентов для встраивания браузера в приложения на Delphi на новый компонент TEdgeBrowser, поддерживающий современные технологии и безопасность, и о том, как интегрировать и вызывать нативный код из Ja


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

Получайте свежие новости и обновления по 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:56:04/0.0038878917694092/0