微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – iFrame里面的cordova回调

我使用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 /子级.

这应该工作.如果您发现任何问题,请告诉我.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐