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);
Динамическое создание iframe
Пытался реализовать это следующим кодом:
Код:
Но IE ругается на строку
Код:
ifrCont.appendChild(contBody);
Как это сделать правильно? По сути у меня есть содержимое одного iframe-а,
но мне нужно создать еще один и вставить в него это содержимое.
Заранее благодарен.
appedChild фактически "вставляет" эллемент. Т.е прежде чем в него что либо вставить (кроме аттрибутов) нужно его "применить", а у тебя получается, что ты вставляешь эллемент body в несуществующий в DOM фрейм. Ошибка понятна?
Ладно, допустим мне просто нужно создать в iframe надпись "bla-bla-bla",
тогда я после создания iframe пишу:
Код:
contBody = document.createElement("BODY");
contBody.innerHTML = "bla-bla-bla";
ifrCont.appendChild(contBody);
contBody.innerHTML = "bla-bla-bla";
ifrCont.appendChild(contBody);
IE все равно ругается, что: "...неожиданный вызов метода или обращение к свойству"
тогда я после создания 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);
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>
<body id="body">
...
</body>
</html>
И естественно браузер ругается на
Код:
ifrCont.appendChild(contBody);
Ты понимашь, ЧТО ты делаешь этим кодом? Ты пытаешь вызвать метод appendChild() объекта ifrCont который объектом НЕ является.
И естественно браузер ругается на
Код:
ifrCont.appendChild(contBody);
Ты понимашь, ЧТО ты делаешь этим кодом? Ты пытаешь вызвать метод appendChild() объекта ifrCont который объектом НЕ является.[/QUOTE]
При всем уважении и нежелании как либо принижать Ваши знания по данному вопросу, могу заметить, что в моем случае(см первый пост) ifrCont объектом все-таки является, по той простой причине, что я создаю его как объект, и обладает как методами так и свойствами, которым можно присваивать значения, что я и успешно делал.
Однако вопрос заключается в том что у этого объекта метод appendChild не доступно, некоторые говорят из соображений безопасности. Также недоступно (для записи) свойство innerHTML и метод write().
А Вас, многоуважаемый alekciy, попрошу в случае если Вы не знаете причины проблемы не лить незначащую воду и громкие фразы и если Вас заинтересует ее решение - подождите пока ответят другие или спросите потом, я Вам скажу, как ее решил я.
Код:
document.frames[0].document.open();
document.frames[0].document.write('your content');
document.frames[0].document.close();
document.frames[0].document.write('your content');
document.frames[0].document.close();
[/QUOTE]
Согласен, погорячился.
Я привел код, который будет работать во всех последних/предпоследних версиях браузеров. Отключить отдельные методы у объектов, на сколько я знаю, нельзя. Тут либо слишком старый браузер, и значит старая версия JS стоит, либо JS отключено вовсе.
Дело хозяйское. Знаешь как решать проблему, зачем же на форум приходить? Знаешь: реализуй, а не лей воду на форум.
Ладно, проехали...