我需要在 Delphi XE6 上为 Android 和 iOS 创建一个应用程序。 这个应用程序必须使用 TWebBrowser 来显示谷歌地图,然后我需要从 Delphi“发送”到 javascript 和从 javascript 到 Delphi 的“接收”命令。通过这种方式,我可以在 map 上显示市场,然后知道用户何时点击标记。 我找到了这个 article在网络上通过 Delphi 代码执行 javascript。
但我不知道如何从 javascript 调用 delphi 过程。 例如我在 Delphi 上有这个程序:
procedure JSFeekback(aParm1, aParm2, aParm3, aParm4: string);
我想在 TWebBrowser 上使用 Javascript 代码来调用它传递 4 个参数。 我发现了类似的问题,但仅适用于 Windows 应用程序,并且答案不适用于 Android(我没有在 iOS 上尝试过)。
最佳答案
正确的方法是使用 Android WebView 的 addJavascriptInterface
函数,可以看出 here , here和 here .
默认情况下,Firemonkey TWebBrowser 不公开此功能。
DPF Android 中有一个自定义WebView 包装器控件,可以看出here .
您可以修改该控件以添加 addJavascriptInterface
函数。
对于 IOS 上的 TWebBrowser,您可以使用 sourceforge 中的自定义 Web 浏览器控件和 here .
另一种可能的方法是使用 TWebBrowser 的 OnShouldStartLoadWithRequest
事件。你可以这样做:
<script language=”javascript” type=”text/javascript”>
window.location.href=”#param1¶m2¶m3¶m4”;
</script>
或
<script language=”javascript”>
window.navigate(”javascript:thisisatest();”);
</script>
然后查看 OnShouldStartLoadWithRequest
的 URL 属性是否包含 #param1¶m2¶m3¶m4
或 javascript:thisisatest();
。
基本上,我们的想法是导航到一个不会更改现有页面 URL 的 URL,并在 OnShouldStartLoadWithRequest
事件中选取该 URL。
关于javascript - 在所有平台(包括 iOS、ANDROID)的 Delphi XE6 上通过 javascript 从 TWebBrowser 回调 Delphi 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416086/