javascript - Iframe 层次结构之间的 PostMessage
问题描述
我正在尝试在祖孙 iframe 之间进行交流。
如果是一级(父母 - 孩子),我可以发送:
孩子 => 父母:
window.parent.postMessage("message", "*");
父母=>孩子:
iframe.contentWindow.postMessage(message, "*");
问题是当关系是祖孙关系时如何处理沟通。我试过了,window.parent.parent
但它不起作用。
我想也许可以编写一些代理代码,这些代码将添加到中间 iframe 中并传递消息,但也许还有另一个更好的解决方案?
解决方案
我最终添加了一些代理脚本。
并且还为每条消息添加了“发送者”键
<script>
var father = 'aaa';
var child = 'bbb';
var proxyIframe;
document.addEventListener('DOMContentLoaded', function(event) {
proxyIframe = document.getElementById('proxyIframe');
});
window.addEventListener("message", function(e) {
if (e.data) {
if (e.data.sender === father) {
proxyIframe.contentWindow && proxyIframe.contentWindow.postMessage(e.data, "*");
} else if (e.data.sender === child) {
window.parent.postMessage(e.data, "*");
}
}
}, false);
</script>
希望它可以帮助任何人
推荐阅读
- php - 不在,在声明中不起作用(预订)
- c# - 如何通过 c# 为 Web API 调用者调用 signalR 函数
- c# - VS2017 + Resharper 如何在输入打开引号时用引号包围选择?
- azure - Web 应用程序未验证自定义域名
- android - 颤振路线。移动应用程序开发
- spring-boot - Spring Data MongoRepository 保存导致重复键错误
- angularjs - 我如何在angularjs中从aws s3压缩和下载完整文件夹
- javascript - 如何一键切换音频播放/暂停
- java - [无法将类型“java.lang.String”的属性值转换为所需类型“java.sql.Time”
- python - Pandas-Python 日期范围