DCEF3 - Delphi Chromium Embedded - Javascript和应用程序代码之间的通信

时间:2014-07-09 07:32:18

标签: delphi chromium-embedded

我正在使用DCEF3,修订版24038bd3a600,我想要在浏览器中的Javascript代码和Delphi应用程序代码之间进行通信。 我知道如何通过使用框架的方法'ExecuteJavascript'从Delphi代码和Javascript中完成它,但是反过来(从Javascript到Delphi /应用程序代码)呢? 我没有在演示/示例(GUIclient,特别是......)中找到这种情况。

2 个答案:

答案 0 :(得分:3)

如果官方源代码执行此操作,则会有 guiclient 演示。查看main.pas文件。

以下代码是类扩展名:

class function TTestExtension.hello: string;
begin
  Result := 'Hello from Delphi';
end;

以下代码注册扩展类:

TCefRTTIExtension.Register('app', TTestExtension);

下面的代码从HTML页面调用您的本机代码:

<script>
alert ( app.hello() );
</script>

下面的代码从嵌入式浏览器中调用您的本机代码:

crm.Browser.MainFrame.ExecuteJavaScript('alert ( app.hello() );', 'about:blank', 0);

答案 1 :(得分:1)

一个非常简单的解决方法是捕获浏览器的OnJSDialog / OnConsoleMessage事件,在需要执行某些事情时在JS中执行警报/登录。在警报消息中告诉delphi部分该怎么做。您需要将其解释为字符串(可能使用脚本库或直接解析)。没有直接调用delphi代码是可能的,但我认为无论如何它都更安全。