У меня iframe B в iframe A вот так:
<iframe id="receiver">
<script>
top.getElementById("sender").addEventListener('message' receiveMessage, false);
function receiveMesage(evt)
{
do something
}
</script>
<iframe id="sender" src="SenderHtml">
</iframe>
И в SenderHtml у меня есть:
<script>
top.postMessage("data, '*');
</script>
Во-первых, я не могу заставить его работать правильно. Но что более важно, iframe "приемник" может быть на странице с гораздо большим количеством данных, как я могу гарантировать, что никто другой не поймает данные, отправленные на него? Я не контролирую остальные данные на своей странице. Могу ли я передать сценарий в SenderHtml для отправки только в кадр "приемник" по идентификатору? Еще один аспект заключается в том, что 2 страницы находятся в разных доменах. благодаря
В конце концов я нашел ответ. Проблема в том, что внутри iframe есть код, это ошибка. Я добавил еще одно перенаправление и решил проблему (все находятся в теле соответствующего html файла):
OuterFrame.html:
<iframe id="receiver" src="Listener.html">
Listener.html:
<script type="text/javascript">
window.addEventListener('message', receiveMessage, false);
function receiveMessage(evt)
{
alert("got message: " + evt.data);
}
</script>
<iframe id="sender" src="Sender.html"></iframe>
Sender.Html:
<script>
parent.postMessage("data, '*');
</script>