4

我们知道跨域限制强加于窗口间通信和HTML5中postMessage的引入。

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

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

如果不存在 HTML5 替代方案,在 PhoneGap 中提供解决方案的奖励积分。

PhoneGap 详情在这里:

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

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

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

PhoneGap 有什么东西可以阻止它反向工作吗?

谢谢!

4

2 回答 2

4

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

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

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

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

请注意,在支持它的浏览器中,同样的技巧可以在 postMessage 中正常工作。一种流行的方法是使用 postMessage 并依靠哈希更改。

于 2012-01-12T22:24:18.820 回答
0

parent.funcitonName(args);对我来说很好。我不确定是否存在跨域问题,我在一个域上执行所有 iFrame 代码。

于 2012-01-12T21:27:04.637 回答