米哈游前端面试题及参考答案
如何在 iFrame 之间进行通信?
在不同的 iFrame 之间进行通信主要有以下几种方式。
一种常见的方法是利用 window.postMessage。在父页面和 iFrame 页面中,它们处于不同的窗口环境,通过 postMessage 可以安全地跨域传递消息。比如,在父页面中可以通过获取 iFrame 元素的 contentWindow 属性来访问 iFrame 的窗口对象。假设 iFrame 的 id 为 “myIframe”,可以使用 document.getElementById ('myIframe').contentWindow 来获取其窗口对象。然后就可以在父页面调用这个窗口对象的 postMessage 方法来发送消息,消息可以是一个简单的字符串,也可以是一个复杂的对象。在 iFrame 页面中,通过监听 window 的 message 事件来接收消息。当收到消息后,可以从事件对象中获取发送过来的数据以及消息的来源等信息。
另外,还可以通过在 URL 中传递参数来进行简单的通信。当创建 iFrame 时,可以在其 src 属性中添加一些自定义的参数。在 iFrame 页面中,通过解析 window.location.href 来获取这些参数。不过这种方式比较局限,只能在初始化 iFrame 时传递简单的信息,而且如果涉及到复杂的数据结构,处理起来比较麻烦。同时