Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
从iFrame调用父JavaScript函数的HTML5方法——除了使用postMessage?还是PhoneGap应用的解决方案?_Javascript_Jquery_Html_Cordova_Postmessage - Fatal编程技术网

从iFrame调用父JavaScript函数的HTML5方法——除了使用postMessage?还是PhoneGap应用的解决方案?

从iFrame调用父JavaScript函数的HTML5方法——除了使用postMessage?还是PhoneGap应用的解决方案?,javascript,jquery,html,cordova,postmessage,Javascript,Jquery,Html,Cordova,Postmessage,我们意识到跨域限制对窗口间通信和HTML5中的postMessage的引入 然而,我们想知道iFrame是否还有其他方法可以调用其父窗口中定义的JavaScript函数 我们发现postMessage调用多个方法有点笨拙,每个方法都需要多个参数 如果不存在HTML5替代方案,则在PhoneGap中提供解决方案可获得额外积分 PhoneGap详情如下: 我们在PhoneGap“index.html”页面中嵌入了一个iFrame 从“index.html”,我们可以调用JavaScript函数或访问

我们意识到跨域限制对窗口间通信和HTML5中的postMessage的引入

然而,我们想知道iFrame是否还有其他方法可以调用其父窗口中定义的JavaScript函数

我们发现postMessage调用多个方法有点笨拙,每个方法都需要多个参数

如果不存在HTML5替代方案,则在PhoneGap中提供解决方案可获得额外积分

PhoneGap详情如下:

我们在PhoneGap“index.html”页面中嵌入了一个iFrame

从“index.html”,我们可以调用JavaScript函数或访问iFrame中的变量

但是我们不能从iFrame调用函数或访问“index.html”中的变量

PhoneGap是否有什么东西阻止它反向工作


谢谢

父函数名(args)对我来说很好。不过,我不确定是否存在跨域问题,我在一个域上执行所有iFrame代码。

postMessage的另一种替代方法是更改URL标签。在JSON消息中编码更复杂的消息并对文本进行编码/解码并不困难:

{“方法名”:['a',b',3]}

变成:#%7B%22methodName%22%3A%20%5B'a'%2C%20'b'%2C%203%5D%7D

如果您有一个脚本在另一端监视哈希更改并处理消息,那么您就可以开始了


请注意,在支持postMessage的浏览器中,同样的技巧也可以很好地用于postMessage。一种流行的方法是使用postMessage,然后使用hash更改。

奇怪的是,在PhoneGap中,我可以调用iFrame中的函数,但iFrame不能调用父级中的函数。可能是特定于PhoneGap的?它不是特定于PhoneGap的。它是浏览器中内置的一种安全措施,用于防止来宾iFrame污染父代码。我怀疑你看到的是同一原产地政策。