Проблема с postMessage
Здравствуйте.
Суть задания: есть iframe на странице a. Нужно создать его копию на странице b, и отобразить её содержимое на странице a с помощью того же iframe. У меня получилось написать решение для случая, когда на станице только один тег iframe. Для многих так и не удалось заставить код работать. Код 1: window.onload = function(){ function test() { var myFrame = document.getElementsByTagName('iframe'); for (var i = 0; i < myFrame.length; i++) { var myFrameContent = myFrame[i].contentWindow || myFrame[i].contentDocument; var arr = [ myFrame[i].src, myFrame[i].width, myFrame[i].height ]; myFrame[i].src = 'http://test2.ru'; myFrame[i].onload = function(){ myFrameContent.postMessage(JSON.stringify(arr), 'http://test2.ru'); }; }; }; test(); } Тут проблема в том, что когда после смены адреса myFrame[i].src = 'http://test2.ru' фрейм загружается и срабатывает событие onload , то счетчик i уже на последней итерации, а данные массива соотвествуют только последнему фрейму. Изменил код к такому виду: window.onload = function(){ var postIframe = function(myFrameContent,arr) { myFrameContent.postMessage(arr,'http://test2.ru'); }; function test() { var myFrame = document.getElementsByTagName('iframe'); for (var i = 0; i < myFrame.length; i++) { var myFrameContent = myFrame[i].contentWindow || myFrame[i].contentDocument; var arr = [ myFrame[i].src, myFrame[i].width, myFrame[i].height ]; myFrame[i].src = 'http://test2.ru'; myFrame[i].onload = postIframe(myFrameContent,arr); }; }; test(); }; С этим кодом скрипт получает все необходимые данные, но на странице b ничего не создается, соответственно на странице a ничего не выводится. Скрипт для приема на странице b: function listener(event){ var myFrame = document.createElement("IFRAME"), parseData = JSON.parse(event.data); myFrame.src = parseData[0]; myFrame.width = parseData[1]; myFrame.height = parseData[2]; myFrame.scrolling = "no"; myFrame.frameBorder = "0"; document.body.appendChild(myFrame); } window.addEventListener ? window.addEventListener("message", listener,false) : window.attachEvent("onmessage", listener); Как мне заставить все это заработать? |
Часовой пояс GMT +3, время: 08:58. |