在我们的cordova/phonegap-app中,我们使用iFrame来加载外部网站。为了与iFrame-content进行通信,我为两个站点(应用程序和网站)创建了一个使用iFrame.contentWindow.postMessage()-method的脚本。原因是在智能手机的系统浏览器中打开iframe内的外部链接。这个解决方案在cordova 2.3.0上运行良好。
今天,我已经将应用程序的cordova版本更新到了3.1.0,并从android-manifest中删除了一些权限。但是与iFrame-content的通信不起作用。显示以下错误错误-消息:
"Unable to post message to https://[domain]. Recipient has origin file://"要将消息发布到IFrame,我使用以下代码:
$('#webViewIFrame').get(0).contentWindow.postMessage('message', host);有谁知道为什么我的通信解决方案不适用于cordova 3.1.0?
发布于 2014-10-04 17:56:26
通常情况下,这应该是因为跨域问题。尝试使用以下命令:
$('#webViewIFrame').get(0).contentWindow.postMessage('message', '*');发布于 2016-08-06 12:02:41
您将需要使用:
$('#webViewIFrame').get(0).contentWindow.postMessage('message',"*");由于phonegap/cordova页面在"file://“和根据https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage”上提供服务
"...posting a message to a page at a file: URL当前要求targetOrigin参数为"*“。file://不能用作安全限制;将来可能会修改此限制。”
https://stackoverflow.com/questions/20547835
复制相似问题