我正在使用DCEF3,修订版24038bd3a600,我想要在浏览器中的Javascript代码和Delphi应用程序代码之间进行通信。 我知道如何通过使用框架的方法'ExecuteJavascript'从Delphi代码和Javascript中完成它,但是反过来(从Javascript到Delphi /应用程序代码)呢? 我没有在演示/示例(GUIclient,特别是......)中找到这种情况。
答案 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代码是可能的,但我认为无论如何它都更安全。