我使用 cordova 和 nanohttpd 创建了一些 Android Web 应用程序。主页是通过 localhost url 从 nanohttp 加载的。主页包含一个 iFrame,它从与主页相同的域(localhost)加载一些页面。
下面的代码是从 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 插件并显示地图。但它无法找到 javascript 回调函数。是否可以在 iFrame 内触发回调函数?如果可以的话,如何实现?
是的,这很有可能。
您的问题是由主窗口和 iframe 窗口之间的冲突引起的。
请参考这个链接:https://github.com/phonegap/phonegap/wiki/iFrame-Usage https://github.com/phonegap/phonegap/wiki/iFrame-Usage
我已经使用cordova插件联系android成功实现了这一点。
为了使其成为可能,您需要执行以下操作:
- 使用以下命令创建父窗口和子窗口/iframe 之间的通信发布消息。父母和孩子互相倾听。
- 将消息从子/iframe 发送/触发到父级以调用 cordova 插件。
- 调用 cordova 插件父窗口.
- 创建全局函数 in 父窗口被称为从科尔多瓦代码/侧面(安卓中的Java)。
- 找出cordova中的java文件(调用回调函数并解析返回结果)。线索:callbackContext.success(参数);。从这里,我们需要调用全局函数在父窗口中创建。
- 致电全局函数从 cordova.java 文件在父窗口中创建。下面是java代码调用js代码的片段:
你的网络视图.loadUrl("javascript:函数名(来自cordova的参数结果)");
- 使用 postMessage 将父级中获取的消息发送回 iframe/子级。
这应该有效。如果您发现任何问题,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)