EnterSandman
@EnterSandman
Эникей

Как слать postmessage из iframe родителю?

Доброго времени суток.
Нужно слать из iframe'а команду окну в котором он запущен. вроде ничего сложного и копипаст со stackoverflow должен был меня спасти, но ничего не получается
может кто-то поделиться готовым решением?
  • Вопрос задан
  • 4989 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vacslav-dev
web-developer
В iframe:
parent.postMessage(JSON.stringify({key: 'value'}), 'http://адрес-родительского-окна');

Вторым параметром в postMessage можно передать '*' - тогда сообщение будет доступно для всех окон.
Сериализация в JSON первого параметра нужна для поддержки IE ниже не то 8 не то 9 версии, точно не вспомню.
В родительском окне:
function handlerMessage(e){
    var data = JSON.parse(e.data);
    var origin = e.origin;
    if(origin !== 'http://адрес_iframe'){
        return false;
    }
    // здесть можно использовать data как объект.
}
if(window.addEventListener){
    window.addEventListener('message', handlerMessage);
} else {
    window.attachEvent('message', handlerMessage);
}

Код на 100% рабочий, с боевого проекта.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы