无法在cordova中使用postMessage

时间:2013-12-12 15:44:09

标签: javascript android iframe cordova postmessage

在我们的cordova / phonegap-app中,我们使用iFrame加载外部网站。为了与iFrame内容进行通信,我已经为使用iFrame.contentWindow.postMessage()方法的两个站点(应用程序和网站)创建了一个脚本。原因是在智能手机的系统浏览器中打开iframe中的外部链接。这个解决方案在cordova 2.3.0上运行良好。

今天我已将应用程序的cordova版本更新为3.1.0,并从android-manifest中删除了一些权限。但是与iFrame内容的通信并不起作用。出现以下错误错误消息:

"Unable to post message to https://[domain]. Recipient has origin file://"

要将消息发布到IFrame,我使用以下代码:

$('#webViewIFrame').get(0).contentWindow.postMessage('message', host);

有谁知道为什么我的通讯解决方案不能与cordova 3.1.0一起使用?

2 个答案:

答案 0 :(得分:1)

通常这应该是因为跨域问题。试试这个:

$('#webViewIFrame').get(0).contentWindow.postMessage('message', '*');

答案 1 :(得分:0)

您需要使用:

$('#webViewIFrame').get(0).contentWindow.postMessage('message',"*");

由于phonegap / cordova页面在" file://"并根据https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

  

" ...在文件的页面上发布消息:URL当前要求targetOrigin参数为" *"。 file://不能用作安全限制;此限制可能会在将来修改。"