2014-02-18 1 views
0

У меня есть IFrame B в IFrame А как это:Как PostMessage в JS для конкретного сценария в IFRAME в другом домене

<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 страницы находятся в разных доменах. Спасибо

ответ

0

В конце концов я нашел ответ. Проблема в том, что внутри 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> 
Смежные вопросы