我使用cordova和nanohttpd创建了一些Android Web应用程序.主页面从nanohttp加载localhost url.主页面包含一个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
我使用cordova插件联系android成功实现了这个.
为了实现这一目标,您需要执行以下操作:
>使用postMessage在父窗口和子/ iframe之间创建通信.父母和孩子互相倾听.
>从child / iframe发送/触发消息到父级以调用cordova插件.
>从父窗口调用cordova插件.
>在父窗口中创建要从cordova代码/侧面调用的全局函数(android中的Java).
>找出cordova中的java文件(调用回调函数并解析结果).线索:callbackContext.success(参数);.从这里,我们需要调用在父窗口中创建的全局函数.
>从cordova的java文件中调用在父窗口中创建的全局函数.以下是从java代码调用js代码的片段:
your_web_view.loadUrl(“javascript:function_name(parameter_result_from_cordova)”);
>使用postMessage将父级中获得的消息发送回iframe /子级.
这应该工作.如果您发现任何问题,请告诉我.
原文地址:https://codeday.me/bug/20190628/1319373.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。