Здравствуйте.
Суть задания: есть
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);
Как мне заставить все это заработать?