Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PhoneGap中的postMessage不工作-iframe到父消息_Javascript_Ios_Cordova_Iframe - Fatal编程技术网

Javascript PhoneGap中的postMessage不工作-iframe到父消息

Javascript PhoneGap中的postMessage不工作-iframe到父消息,javascript,ios,cordova,iframe,Javascript,Ios,Cordova,Iframe,我已经建立了一个PhoneGap应用程序,它利用了与应用程序捆绑在一起的iframe,我试图将e消息从iframe传递给家长,当我在实际的iPad上运行应用程序时,它似乎不起作用;但是,当我在同一台设备上的浏览器中运行应用程序时,它工作正常 以下是我在iframe中用来发送消息的代码,请注意,我使用HammerJS来捕获一些事件: var domain = 'http://' + document.domain; $('body').hammer().on("swipe", "", funct

我已经建立了一个PhoneGap应用程序,它利用了与应用程序捆绑在一起的iframe,我试图将e消息从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://”处提供,并且根据

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


不为我工作,这是我从第页打电话的方式);“class=”ui btn ui角落全部“>打开窗口,接收与您相同的内容,并在postMessage中尝试了file://和,但运气不佳。请您解释一下如何从html打开iframe。这不是从html打开iframe,而是将数据从iframe传递到父网站,您可以在此处阅读更多信息:。至于你想做什么,你不能从JavaScript打开iframe,但你可以打开一个新窗口,你可以在这里阅读更多:@JayaVishwakarma你是如何解决这个问题的?我们使用的是
parent.postMessage(消息“*”)
可以在Android上运行,但我们无法让它运行iOS@jablesauce您是否将iframe域列入了白名单?请参阅->IOS:“若要将域列入白名单,请将其添加到Cordova.plist文件中的ExternalHosts数组。”@jablesauce找到解决方案了吗?