gpt4 book ai didi

javascript - 在所有平台(包括 iOS、ANDROID)的 Delphi XE6 上通过 javascript 从 TWebBrowser 回调 Delphi 函数?

转载 作者:可可西里 更新时间:2023-11-01 03:56:59 31 4
gpt4 key购买 nike

我需要在 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 , herehere .

默认情况下,Firemonkey TWebBrowser 不公开此功能。

DPF Android 中有一个自定义WebView 包装器控件,可以看出here .

您可以修改该控件以添加 addJavascriptInterface 函数。

对于 IOS 上的 TWebBrowser,您可以使用 sourceforge 中的自定义 Web 浏览器控件和 here .

另一种可能的方法是使用 TWebBrowser 的 OnShouldStartLoadWithRequest 事件。你可以这样做:

<script language=”javascript” type=”text/javascript”>
window.location.href=”#param1&param2&param3&param4”;
</script>

<script language=”javascript”>
window.navigate(”javascript:thisisatest();”);
</script>

然后查看 OnShouldStartLoadWithRequest 的 URL 属性是否包含 #param1&param2&param3&param4javascript:thisisatest();

基本上,我们的想法是导航到一个不会更改现有页面 URL 的 URL,并在 OnShouldStartLoadWithRequest 事件中选取该 URL。

关于javascript - 在所有平台(包括 iOS、ANDROID)的 Delphi XE6 上通过 javascript 从 TWebBrowser 回调 Delphi 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416086/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com