У меня есть встроенный 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. Итак, мой вопрос заключается в следующем: учитывая, что мне нужно передать сообщение из iframe его родителю (оба из которых я контролирую), есть метод, который я могу использовать, который будет работать через любой (> IE6) браузер?