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

标签 javascript android ios delphi

我需要在 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¶m2¶m3¶m4javascript:thisisatest();

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

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

相关文章:

ios - 通过单击按钮显示或隐藏项目

ios - 显示/隐藏 iPhone 状态栏后调整内容大小

android - 在 Android 中正确检测放置在 ViewPager 内的 GridView 上的滑动

java - android NDK——将C++方法转换为java方法

android - 仅从最近的堆栈中排除一项 Activity

javascript - 如何在 Redux 中管理(异步)级联数据?

ios - 快速翻转动画翻转整个 View 而不是 subview

javascript - 我的移动菜单栏中的 Href 链接不起作用

javascript - 为什么我在使用 Array concat 时不断收到 TypeScript 错误 "No overload matches this call"?

javascript - 请有人解释一下 eloquent 中这个示例的绑定(bind)函数的工作原理