Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > импортирование стилей в iframe


Автор: Black Rabbit 20.10.2005, 15:07
Имеется код

Код

<iframe id="iView" width="100%" height="400" contenteditable="true"  frameborder=0></iframe>


Код

<script type="text/javascript"> 
//alert(iView.document.styleSheets.length);
var styleSheet =iView.document.createStyleSheet('http://fero/pcms/htmleditor/css/EditorStyle.css');
//alert(iView.document.styleSheets.length);
</script>


Браузер выдает ошибку Error Message: Unspecified error. Если раскомментировать алерты, выдаются правильные результаты и сообщение об ошибке исчезает, но стили все равно не подключаются. В чем может быть проблема? Спасибо заранее

Автор: GIK 20.10.2005, 15:23
Что ты хочеш сделать в своем коде?
Объясни ситуацию по подробнее.

Автор: Aliance 20.10.2005, 15:52
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods/createstylesheet.asp
Видимо не правильный синтаксис вызова метода.

В литературе не нашел этого метода smile Зато нашел DOMImplementation.createCSSStyleSheet - может попробуешь воспользоваться им?!

Автор: Black Rabbit 20.10.2005, 16:01
Надо сделать визуальный редактор. Создаю ифрейм и устанавливаю designMode=on. Возникла необходимость подключить к этому ифрейму таблицу стилей. Пытаюсь использовать функцию createStyleSheet, но пока что-то увы безуспешно smile

Автор: Aliance 20.10.2005, 16:05
<style ...>
@import(...);
</style>

Автор: Black Rabbit 20.10.2005, 16:25
Нет, такой метод не подойдет. Стили могут подключаться javascript-ом. Вот полный код:

Код

<iframe id="iView" width="100%" height="400" contenteditable="true"  frameborder=0></iframe>
Код

<script type="text/javascript"> 
//alert(iView.document.styleSheets.length);
var styleSheet =iView.document.createStyleSheet('http://fero/pcms/htmleditor/css/EditorStyle.css');
//alert(iView.document.styleSheets.length);
iView.document.designMode = 'On';
</script>

Когда снимаю комментарии, первый алерт выдает 0, второй- 1, как и должно быть, но стили не отображаются.


Автор: Aliance 20.10.2005, 16:52
Код

var fram = document.getElementById('iView');
var frame_doc = (fram.contentDocument) ? fram.contentDocument : ((fram.contentWindow) ? fram.contentWindow.document : null);

var css_style_sheet = frame_doc.createStyleSheet('http://fero/pcms/htmleditor/css/EditorStyle.css');

Автор: Black Rabbit 21.10.2005, 11:23
Уфф, разобралась!!!
Код

iView.document.designMode = 'On';
iView.document.write('содержимое ифрейма');

var style = iView.document.createElement('link');
style .setAttribute('rel','stylesheet');
style .setAttribute('href','http://fero/pcms/htmleditor/css/EditorStyle.css');
iView.document.appendChild(style );
  
iView.document.close();

Автор: Sardar 21.10.2005, 13:20
Цитата(Black @ 21.10.2005, 10:23)
iView.document.designMode = 'On';

Зачем это? Появиться курсор, пользователь сможет редактировать контент под мозиллой.
Цитата(Black @ 21.10.2005, 10:23)
iView.document.write('содержимое ифрейма');

Ссылку на document лучше доставать как сделанно в коде Aliance, иначе не удивляйся если в некоторых браузерах и в некоторых режимах iView.document==document вдруг станет true, тем самым в основную страничку полезет всякий мусор smile

Автор: Black Rabbit 21.10.2005, 20:52
Да я пробовала как Aliance советовал, тоже безуспешно.

Цитата
 
Зачем это? Появиться курсор, пользователь сможет редактировать контент под мозиллой.


Для того и рассчитывается, чтобы пользователь мог редактировать контент. Предназначается для создания визуального HTML редактора (WYSIWYG)

Автор: Sardar 21.10.2005, 23:40
Цитата(Black @ 21.10.2005, 19:52)
Для того и рассчитывается, чтобы пользователь мог редактировать контент. Предназначается для создания визуального HTML редактора (WYSIWYG)

Ну тогда для ИЕ contentEditable нужно править)

Автор: Aliance 22.10.2005, 20:11
http://msdn.microsoft.com/workshop/author/editing/tutorials/html_editor.asp

Автор: Black Rabbit 24.10.2005, 10:38
Спасибо, полезная информация

Автор: Aliance 24.10.2005, 12:45
Спасибо Sardarу за эту ссылку smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)