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

Ваш аккаунт

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

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

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

Динамическое создание iframe

17K
06 августа 2006 года
=vd=
10 / / 03.08.2006
Необходимо динамически "собрать" iframe и вставит его на страницу.

Пытался реализовать это следующим кодом:

 
Код:
ifrCont = document.createElement("IFRAME");
ifrCont.src = "";
ifrCont.height = "100px";
ifrCont.width = "100%";
ifrCont.scrolling="auto";
contBody = document.createElement("BODY");
ifrCont.appendChild(contBody);

editedContent.appendChild(ifrCont);


Но IE ругается на строку
 
Код:
ifrCont.appendChild(contBody);


Как это сделать правильно? По сути у меня есть содержимое одного iframe-а,
но мне нужно создать еще один и вставить в него это содержимое.

Заранее благодарен.
15
06 августа 2006 года
shaelf
2.7K / / 04.05.2005
appedChild фактически "вставляет" эллемент. Т.е прежде чем в него что либо вставить (кроме аттрибутов) нужно его "применить", а у тебя получается, что ты вставляешь эллемент body в несуществующий в DOM фрейм. Ошибка понятна?
17K
06 августа 2006 года
=vd=
10 / / 03.08.2006
[QUOTE=shaelf]appedChild фактически "вставляет" эллемент. Т.е прежде чем в него что либо вставить (кроме аттрибутов) нужно его "применить", а у тебя получается, что ты вставляешь эллемент body в несуществующий в DOM фрейм. Ошибка понятна?[/QUOTE]

Ладно, допустим мне просто нужно создать в iframe надпись "bla-bla-bla",
тогда я после создания iframe пишу:

 
Код:
contBody = document.createElement("BODY");
contBody.innerHTML = "bla-bla-bla";
ifrCont.appendChild(contBody);


IE все равно ругается, что: "...неожиданный вызов метода или обращение к свойству"
12
06 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE==vd=]Ладно, допустим мне просто нужно создать в iframe надпись "bla-bla-bla",
тогда я после создания iframe пишу:
IE все равно ругается, что: "...неожиданный вызов метода или обращение к свойству"[/QUOTE]
Видимо стоит более четко представлять себе логику написания JS кода, а так же DOM API.

 
Код:
ar body = document.getElementById('body');
var element = document.createElement('script');
element.text = 'function clk() {alert("OK");}';
var arrtibute_type = document.createAttribute('type');
arrtibute_type.value = 'text/javascript';
element.setAttributeNode(arrtibute_type);
body.appendChild(element);

Где на странице у тега BODY атрибут ID равень body, т.е.
 
Код:
...
<body id="body">
...
</body>
</html>

И естественно браузер ругается на
 
Код:
ifrCont.appendChild(contBody);

Ты понимашь, ЧТО ты делаешь этим кодом? Ты пытаешь вызвать метод appendChild() объекта ifrCont который объектом НЕ является.
17K
06 августа 2006 года
=vd=
10 / / 03.08.2006
[QUOTE=alekciy]Видимо стоит более четко представлять себе логику написания JS кода, а так же DOM API.

И естественно браузер ругается на
 
Код:
ifrCont.appendChild(contBody);

Ты понимашь, ЧТО ты делаешь этим кодом? Ты пытаешь вызвать метод appendChild() объекта ifrCont который объектом НЕ является.[/QUOTE]

При всем уважении и нежелании как либо принижать Ваши знания по данному вопросу, могу заметить, что в моем случае(см первый пост) ifrCont объектом все-таки является, по той простой причине, что я создаю его как объект, и обладает как методами так и свойствами, которым можно присваивать значения, что я и успешно делал.

Однако вопрос заключается в том что у этого объекта метод appendChild не доступно, некоторые говорят из соображений безопасности. Также недоступно (для записи) свойство innerHTML и метод write().

А Вас, многоуважаемый alekciy, попрошу в случае если Вы не знаете причины проблемы не лить незначащую воду и громкие фразы и если Вас заинтересует ее решение - подождите пока ответят другие или спросите потом, я Вам скажу, как ее решил я.
17K
06 августа 2006 года
=vd=
10 / / 03.08.2006
Да, если кто столкнется с подобной проблемой, единственное работающее решение задачи подгрузки содержимого в iframe(по крайней мере найденное мной) - использование следующего кода:

 
Код:
document.frames[0].document.open();
 document.frames[0].document.write('your content');
 document.frames[0].document.close();
12
07 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE==vd=]При всем уважении и нежелании как либо принижать Ваши знания по данному вопросу, могу заметить, что в моем случае(см первый пост) ifrCont объектом все-таки является, по той простой причине, что я создаю его как объект, и обладает как методами так и свойствами, которым можно присваивать значения, что я и успешно делал.
[/QUOTE]
Согласен, погорячился.
12
07 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE==vd=]Однако вопрос заключается в том что у этого объекта метод appendChild не доступно, некоторые говорят из соображений безопасности. Также недоступно (для записи) свойство innerHTML и метод write().[/QUOTE]
Я привел код, который будет работать во всех последних/предпоследних версиях браузеров. Отключить отдельные методы у объектов, на сколько я знаю, нельзя. Тут либо слишком старый браузер, и значит старая версия JS стоит, либо JS отключено вовсе.
12
07 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE==vd=]А Вас, многоуважаемый alekciy, попрошу в случае если Вы не знаете причины проблемы не лить незначащую воду и громкие фразы и если Вас заинтересует ее решение - подождите пока ответят другие или спросите потом, я Вам скажу, как ее решил я.[/QUOTE]
Дело хозяйское. Знаешь как решать проблему, зачем же на форум приходить? Знаешь: реализуй, а не лей воду на форум.

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