Я построил плеер, который встроен через iframe.Если два игрока встроены, я хочу остановить одного, если другой начнет играть.Итак, вопрос в том, можно ли использовать postMessage
для связи между двумя дочерними фреймами, не имея родителя?Vimeo делает это как-то.Если я встраиваю двух игроков vimeo и играю одного, то другого, второй игрок останавливает первого.Как?(подтверждение: https://jsfiddle.net/3fy14orw/2/)
В моем плеере я использую postMessage
, чтобы вызвать событие в родительском окне, когда мой игрок играет. Я подтвердил, что это работает. Я пытался использовать мойфактическое происхождение, а также "*" для начала.
//in my player
window.parent.postMessage(data, "*");
Как может узнать другой игрок? Я пробовал,
//tried adding this in my player
window.parent.addEventListener('message', function(evt) {});
Но это выдает ошибку.
"SecurityError: Blocked a frame with origin..."
Я также пытался присвоить имена своим фреймам и получить к ним доступ через объект window.parent.frames, но это также вызывает проблему с CORS.
Допущения:
- Мои проигрыватели имеют одинаковое происхождение.
- Мой проигрыватель может быть встроен в любой домен, а не только в мой собственный