Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

iframe, js, DOM как связать вместе???

21K
21 мая 2007 года
alexv
16 / / 24.04.2007
Такой вопрос - хочется изменить содержимое iframe средствами DOM/js.
Но, почему-то не получается:-)

Имеется следующего плана код:

 
Код:
var main_frame = document.createElement("iframe");
main_frame.id = "_main_frame_";
main_frame.name = "_main_frame_";
document.body.appendChild(main_frame);


Он отрабатывает успешно. Создается пустой <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();


Честно искал в поезге и ничего не нашел...

А если делать document.write(''); то все почему-то работает...
Что не так??

Заранее спасибо все ответившим:-)
7.9K
21 мая 2007 года
vasa_c
191 / / 05.04.2007
Поиск, поиск, поиск рулит
<Ссылка на фрейм>.contentWindow - объект window фрейма
<Ссылка на фрейм>.contentWindow.document - соответственно, документ.
Дальше все, как обычно
А вот open() делать не нужно
21K
21 мая 2007 года
alexv
16 / / 24.04.2007
так вот я так делал. и нифига не работает. FF не ругается и ничего не показывает. IE ругается на то, что main_frame.contentWindow.document.body нулевой.

----------------------
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);
7.9K
21 мая 2007 года
vasa_c
191 / / 05.04.2007
Конечно нулевой.
Откуда взяться BODY в пустом ифрейме?
Нужно установить href на нужную страницу и дождаться ее загрузки
21K
21 мая 2007 года
alexv
16 / / 24.04.2007
А почему этот код работает в том случае, когда я задаю ифрейм
в html файле, а потом меняю его с помощью js?

Перефразирую вопрос так:
Приведенные выше куски кодов не работают в том случае, когда я
создаю ифрейм посредством document.createElement('iframe')...

В случае, если ифрейм указан в хтмл файле руками все работает...
7.9K
22 мая 2007 года
vasa_c
191 / / 05.04.2007
Потому что, когда он указывается в html, в него грузится документ. У которого есть <body>. А когда создается через DOM, в него ничего не грузится.
21K
22 мая 2007 года
alexv
16 / / 24.04.2007
т.е. ты хочешь сказать, что если я просто пишу <iframe></iframe>
то в него уже загружен пустой документ? Интересно.

В своих зысканиях дошел до следующего:

---
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 нифига не рабоате... И ругательств нет никаких.
7.9K
22 мая 2007 года
vasa_c
191 / / 05.04.2007
Цитата:
т.е. ты хочешь сказать, что если я просто пишу <iframe></iframe>
то в него уже загружен пустой документ? Интересно.


Да. И попробуй так сделать в IE.
По моему была подобная лажа на одном из форумов. IE динамически созданный iframe, по ходу, считает принадлежащим другому домену.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог