Получить iframe по событию сообщения - PullRequest
0 голосов
/ 21 мая 2018

У меня есть несколько iframe с одним и тем же источником (но разными путями) на странице.
Каждый iframe генерирует событие message через postMessage.
Родительское окно слушает эти события:

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

Я хочу получить исходный элемент iframe для каждого события.

Важным ограничением является то, что у меня нет доступа к event.source.contentWindow из-за перекрестного происхождения.

UPD: answerниже

1 Ответ

0 голосов
/ 22 мая 2018

Решение состоит в том, чтобы сравнить event.source и iframe.contentWindow:

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