gpt4 book ai didi

javascript - iFrame 中的 cordova 回调

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:25 27 4
gpt4 key购买 nike

我使用 cordova 和 nanohttpd 创建了一些 Android 网络应用程序。主页是从带有本地主机 url 的 nanohttp 加载的。主页包含一个 iFrame,它从与主页相同的域(本地主机)加载一些页面。

下面的代码是从 iFrame 调用的:

document.addEventListener("deviceready", function(){
cordova.exec(function(response) {
self.doSomething(response);
},function(error) {
alert(JSON.stringify(error));
},"thePlugin","showMap", param);}, false);

现在这是我的问题:来自 iframe 的 cordova.exec 能够调用 Java 插件并显示 map 。但它无法找到 javascript 回调函数。是否可以在 iFrame 中触发回调函数?如果可能,怎么做?

最佳答案

是的,很有可能。

你的问题是主窗口和iframe窗口冲突造成的。

请引用此链接: https://github.com/phonegap/phonegap/wiki/iFrame-Usage

我已经使用 cordova 插件联系 android 成功实现了这一点。

要使其成为可能,您需要执行以下操作:

  1. 使用postMessage 创建父窗口和子/iframe 之间的通信。 parent 和 child 互相倾听。
  2. 将消息从子/iframe 发送/触发到父级以调用 cordova 插件。
  3. 父窗口调用cordova插件。
  4. 父窗口中创建全局函数,以便从cordova代码/端(android中的Java)调用。
  5. 找出cordova 中的java 文件(调用回调函数并解析返回结果)。 线索:callbackContext.success(parameter);。从这里,我们需要调用在父窗口中创建的全局函数
  6. 从cordova 的java 文件中调用在父窗口中创建的全局函数。这是从 java 代码调用 js 代码的 fragment :

your_web_view.loadUrl("javascript:function_name(parameter_result_from_cordova)");

  1. 使用 postMessage 将在 parent 中获取的消息发送回 iframe/child。

这应该有效。如果您发现任何问题,请告诉我。

关于javascript - iFrame 中的 cordova 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303271/

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