var main_frame = document.createElement("iframe");
main_frame.id = "_main_frame_";
main_frame.name = "_main_frame_";
document.body.appendChild(main_frame);
iframe, js, DOM как связать вместе???
Но, почему-то не получается:-)
Имеется следующего плана код:
Код:
Он отрабатывает успешно. Создается пустой <iframe>.
А далее, я хочу в только что созданный <iframe> добавить элемент
Код:
window.frames['_main_frame_'].document.open();
var t = window.frames['_main_frame_'].document.createTextNode('hello from frame!');
window.frames['_main_frame_'].document.body.appendChild(t);
window.frames['_main_frame_'].document.close();
var t = window.frames['_main_frame_'].document.createTextNode('hello from frame!');
window.frames['_main_frame_'].document.body.appendChild(t);
window.frames['_main_frame_'].document.close();
Честно искал в поезге и ничего не нашел...
А если делать document.write(''); то все почему-то работает...
Что не так??
Заранее спасибо все ответившим:-)
<Ссылка на фрейм>.contentWindow - объект window фрейма
<Ссылка на фрейм>.contentWindow.document - соответственно, документ.
Дальше все, как обычно
А вот open() делать не нужно
----------------------
var t = main_frame.contentWindow.document.createTextNode('hello from iframe!');
main_frame.contentWindow.document.body.appendChild(t);
----------------------
Вообще, читал что у FF вместо document следует использовать contentDocument... Но не работает всеравно.
если вместо ссылки на только что созданной ифрейм использовать
window.frames['mf'].contentWindow
FF ругается на то, что этот самый объект не имеет свойств.
Фрейм создаю так:
var main_frame = document.createElement("iframe");
main_frame.id = 'mf';
main_frame.name = 'mf';
document.body.appendChild(main_frame);
Откуда взяться BODY в пустом ифрейме?
Нужно установить href на нужную страницу и дождаться ее загрузки
в html файле, а потом меняю его с помощью js?
Перефразирую вопрос так:
Приведенные выше куски кодов не работают в том случае, когда я
создаю ифрейм посредством document.createElement('iframe')...
В случае, если ифрейм указан в хтмл файле руками все работает...
Потому что, когда он указывается в html, в него грузится документ. У которого есть <body>. А когда создается через DOM, в него ничего не грузится.
то в него уже загружен пустой документ? Интересно.
В своих зысканиях дошел до следующего:
---
this.frame_lnk = document.createElement('iframe');
this.frame_lnk.id = this.frame_id;
this.main_div_lnk.appendChild(this.frame_lnk);
this.frame_lnk.contentWindow.document.open();
this.frame_lnk.contentWindow.document.close();
---
После чего:
---
var idoc = this.frame_lnk.contentWindow.document;
var new_row = idoc.createElement('tr');
this.table_lnk.appendChild(new_row);
var td = idoc.createElement('td');
new_row.appendChild(td);
var txt = idoc.createTextNode('hello from iframe!');
td.appendChild(txt);
---
таблица создана внутри iframe
---
В FF код работает. В ифрейме появляется строка.
В IE нифига не рабоате... И ругательств нет никаких.
Цитата:
т.е. ты хочешь сказать, что если я просто пишу <iframe></iframe>
то в него уже загружен пустой документ? Интересно.
то в него уже загружен пустой документ? Интересно.
Да. И попробуй так сделать в IE.
По моему была подобная лажа на одном из форумов. IE динамически созданный iframe, по ходу, считает принадлежащим другому домену.