Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Кроссдоменный postMessage (https://javascript.ru/forum/events/61670-krossdomennyjj-postmessage.html)

enivor 01.03.2016 14:47

Кроссдоменный postMessage
 
Здравствуйте, уважаемые специалисты!

Имеются страницы на разных доменах. Дочерняя выводится в iframe на родительской.
Задача: сделать чтобы при нажатии на iframe происходило действие на родительской странице.
В настоящий момент происходят ложные срабатывания скрипта на родительской странице из-за особенностей шаблона CMS.
Нужно сделать, чтобы скрипт срабатывал только при получении определенного сообщения от дочерней страницы, например, "hello".

Заранее огромное спасибо за помощь!

parentdomain.ru

<iframe src="http://childdomain.ru"></iframe>

<script type="text/javascript">
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent,function(e) {
document.write('<div>it works</div>');
});
</script>


childdomain.ru

<script type="text/javascript">
function click() {
parent.postMessage("hello","*");
return false;
}
onmouseup=click;
</script>

destus 01.03.2016 15:14

enivor,
ну и почему нельзя проверить свойство e.data?
e.data == 'hello' && document.write('<div>it works</div>');

enivor 01.03.2016 15:18

Спасибо огромное, destus! То, что надо! :)


Часовой пояс GMT +3, время: 14:33.