iFrame 中的 cordova 回调
cordova callback inside iFrame
我使用cordova和nanohttpd创建了一些Android Web应用程序。主页是从带有本地主机网址的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插件并显示地图。但是它找不到javascript回调函数。是否可以在 iFrame 中触发回调函数?如果可能,如何?
是的,这是很有可能的。
您的问题是由主窗口和 iframe 窗口之间的冲突引起的。
请参考此链接:https://github.com/phonegap/phonegap/wiki/iFrame-Usage
我已经使用科尔多瓦插件联系安卓成功实现了这一点。
为此,您需要执行以下操作:
- 使用 postMessage 创建父窗口和子窗口/iframe 之间的通信。父母和孩子互相倾听。
- 发送/触发从子/iframe 到父级的消息以调用 cordova 插件。
- 从父窗口调用 cordova 插件。
- 在父窗口中创建全局函数,以便从 cordova 代码/端调用(android 中的 Java(。
- 找出科尔多瓦中的java文件(调用回调函数并解析结果(。线索:callbackContext.success(parameter(;.从这里开始,我们需要调用在父窗口中创建的全局函数。
- 从 cordova 的 java 文件中调用在父窗口中创建的全局函数。以下是从java代码调用js代码的片段:
your_web_view.loadUrl("javascript:function_name(parameter_result_from_cordova("(;
- 使用 postMessage 将父级中的消息发回 iframe/子级。
这应该有效。如果您发现任何问题,请告诉我。
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- Cordova Android短信插件不会触发成功或错误回调
- 自定义Cordova插件,释放一个保持回调而不调用它
- iFrame 中的 cordova 回调
- 带有 TypeScript 的 Cordova.exec 中的回调函数
- 无法将回调发送到多个cordova.exec
- 在所有cordova.exec函数结束后执行成功回调
- 当位置服务被禁用时,Cordova Android-getCurrentPosition不会触发错误回调
- 从Objective C委托回调Cordova插件
- Cordova + Angularjs -为什么从回调函数内部调用$resource(或$http)会返回404
- Cordova inAppBrowser的回调事件
- 第二次插件调用后收到的Cordova插件回调
- Cordova + Angular + PushPlugin -回调未触发
- 使用Meteor的Cordova文件插件,在getDirectory()回调中接收一个代码:5 ENCODING_ERR
- Cordova文件插件FileReader.readAsText收到错误,但不调用错误回调