javascript - 通过消息事件获取 iframe
问题描述
我在页面上有几个具有相同来源(但路径名不同)的 iframe。
每个 iframemessage
通过postMessage
.
父窗口监听这些事件:
window.addEventListener('message', function(event) {
/* Get iframe element by event */
});
我想为每个事件获取源 iframe 元素。重要的限制是由于跨域
,我无法访问。UPD:在下面回答event.source.contentWindow
解决方案
解决方案是比较event.source
和iframe.contentWindow
:
function getFrameByEvent(event) {
return [].slice.call(document.getElementsByTagName('iframe')).filter(function(iframe) {
return iframe.contentWindow === event.source;
})[0];
}
这是更现代的版本:
function getFrameByEvent(event) {
return Array.from(document.getElementsByTagName('iframe')).filter(iframe => {
return iframe.contentWindow === event.source;
})[0];
}
推荐阅读
- python - Slack WebClient - 如何关闭模式?
- c# - C# vs C:组织数据结构
- python - 为二进制向量的数据帧计算相似度矩阵的最佳方法是什么?
- javascript - TypeError:无法读取未定义 nodejs 的属性“地图”
- javascript - 为什么有些值被识别为日期?
- java - org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings 类的 SecurityException
- spring-mvc - 使用 SpringMVC Mockito 和 PowerMockito 进行测试时如何保留 HttpServletRequest 自动装配
- reporting-services - 报告不显示任何数据
- c# - 如何使用 youtube api 在 c# dotnet 应用程序中创建 youtube 播放列表?
- wcf - 未应用或使用 ClientCredentials ServiceCertificate 身份验证的配置