Передача сообщений из iFrame во все браузеры

У меня есть embed-able iframe, который будет использоваться на сторонних сайтах. В нем есть несколько форм, которые нужно заполнить, а в конце нужно сообщить родительской странице, что это сделано.

Другими словами, iframe должен передать родителю сообщение при нажатии кнопки.

После пролистывания океанов "Нет, междоменная политика - это придурок", я нашел window.postMessage, часть спецификации черновика HTML5.

В основном, вы помещаете следующий JavaScript на вашу страницу, чтобы захватить сообщение из iframe:

window.addEventListener('message', goToThing, false);

function goToThing(event) {
    //check the origin, to make sure it comes from a trusted source.
    if(event.origin !== 'http://localhost')
        return;

    //the event.data should be the id, a number.
    //if it is, got to the page, using the id.
    if(!isNaN(event.data))
        window.location.href = 'http://localhost/somepage/' + event.data;
}

Затем в iframe, есть какой-нибудь JavaScript, который посылает сообщение родителю:

$('form').submit(function(){
    parent.postMessage(someId, '*');
});

Круто, правда? Единственная проблема в том, что он, кажется, не работает ни в одной из версий IE. Итак, мой вопрос вот в чём: Учитывая, что мне нужно передать сообщение от ифрейма родителю (им обоим я управляю), есть ли метод, который я могу использовать и который будет работать в любом (>IE6) браузере?

12
задан Dusda 20 September 2011 в 01:56
поделиться