我们知道对窗口间通信施加的跨域限制以及在HTML5中引入postMessage.
但是,我们想知道iFrame是否还有其他方法可以调用其父窗口中定义的JavaScript函数.
我们发现postMessage对于调用多个方法有点笨拙,每个方法都需要多个参数.
如果不存在HTML5替代方案,则可以在PhoneGap中提供解决方案.
PhoneGap详细信息:
我们在PhoneGap“index.html”页面中嵌入了一个iFrame.
从“index.html”,我们可以在iFrame中调用JavaScript函数或访问变量.
但是我们不能从iFrame调用“index.html”中的函数或访问变量.
有没有关于PhoneGap的东西阻止它反向工作?
谢谢!
解决方法:
postMessage的替代方法是URL标签更改.在JSON消息中编码更复杂的消息并对文本进行编码/解码并不困难:
{“methodName”:[‘a’,’b’,3]}
成为:#{“methodName”:[‘a’,’b’,3]}
如果你在另一边有一个脚本正在观察哈希变化和处理消息,你就可以了.
请注意,在支持它的浏览器中,相同的技巧可以与postMessage一起使用.一种流行的方法是使用postMessage并回退散列更改.