PhoneGap中的postMessage无法正常工作 - iframe到父消息传递

时间:2014-08-28 16:55:04

标签: javascript ios cordova iframe

我已经构建了一个PhoneGap应用程序,该应用程序使用与应用程序捆绑在一起的iframe,我正在尝试将if消息从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);

3 个答案:

答案 0 :(得分:3)

答案是使用“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
});

答案 1 :(得分:1)

尝试使用

var domain = '*';

通常这应该是因为跨域问题,see more here

答案 2 :(得分:0)

您需要使用:

parent.postMessage(message,"*");

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

  

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