PhoneGap中的postMessage不起作用-iframe到父消息

postMessage in PhoneGap not working - iframe to parent messaging

本文关键字:消息 -iframe 不起作用 中的 postMessage PhoneGap      更新时间:2023-09-26

我已经构建了一个PhoneGap应用程序,它利用了与该应用程序捆绑在一起的iframe,我正试图从iframe向父级传递电子邮件,当我在实际的iPad上运行该应用程序时,该消息似乎不起作用;然而,当我在同一台设备上的浏览器中运行该应用程序时,它运行良好。

以下是我在iframe中用来发送消息的代码,请注意,我正在使用HammerJS来捕获一些事件:

var domain = 'http://' + document.domain;
$('body').hammer().on("swipe", "", function(event) {
    var message = event.gesture.direction;
    parent.postMessage(message,domain); //send the message and target URI
});

以及我用来获取信息的代码:

window.addEventListener('message',function(event) {
    alert(event.data);
},false);

答案是使用"file://"作为域名,因此代码看起来像这样:

var domain = 'file://';
$('body').hammer().on("swipe", "", function(event) {
    var message = event.gesture.direction;
    parent.postMessage(message,domain); //send the message and target URI
});

尝试使用

var domain = '*';

通常情况下,这应该是因为跨域问题,请参阅此处的更多信息

您需要使用:

parent.postMessage(message,"*");

由于phonegap/cordova页面以"file://"提供,因此根据https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

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