通过消息事件获取iframe

时间:2018-05-21 20:21:55

标签: javascript iframe postmessage

我在页面上有几个相同来源(但路径名不同)的iframe 每个iframe都会通过message发出postMessage个事件 父窗口监听这些事件:

window.addEventListener('message', function(event) {
  /* Get iframe element by event */
});

我想为每个事件获取源iframe元素。

重要的限制是我因为交叉来源而无法访问event.source.contentWindow

UPD:回答

1 个答案:

答案 0 :(得分:4)

解决方案是比较event.sourceiframe.contentWindow

function getFrameByEvent(event) {
  return [].slice.call(document.getElementsByTagName('iframe')).filter(function(iframe) {
    return iframe.contentWindow === event.source;
  })[0];
}