在我们的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一起使用?
答案 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://不能用作安全限制;此限制可能会在将来修改。"