Стили в DHTML Edit Control

sokol

Zavolga.Net
Стили в DHTML Edit Control

Непонятно по каким причинам данный контролл упорно не хочет отображать стили некоторых элементов типа p, h* и.т.д Хотя таблица стилей для загружаемого документа прописана.

В то же время я прекрасно загружаю все стили в select и при изменении стиля ссылки к примеру, это сразу же отображается. Стили других элементов меняются, но этого не видно в редакторе.

Если кто сталкивался с данной проблемой, подскажите решение.
 

slach

Новичок
1) под стилем ты понимаешь внешний css файл??
2) как ты подключаешь этот стиль ?
 

MiRacLe

просто Чудо
editControl.DOM.createStyleSheet('/full/path/to/style.css');

если речь идёт о том ,что я думаю,то ошибка именно в пути... лучше писать полный,от $_SERVER['DOCUMENT_ROOT']
 

slach

Новичок
MiRaClE
ты клиент от сервера отличаешь вообще?

причем тут $_SERVER ? если все выполняется на стороне клиента в JS ?...

полный путь может быть в данном случае вместе с именем сайта... либо от корня сайта опять же

к автору вопроса
ну и как же все таки ты задаешь стиль документа ? и что ты подразумеваешь под стилем?
 

sokol

Zavolga.Net
slach
При формировании загружаемого документа добавляю
PHP:
<link href="/path/to/file.css" rel="stylesheet" type="text/css">
Под стилем подразуемеваю название класса css.

Название класса для selection меняю так
PHP:
function ParagraphStyle_onchange(option) {	    
  var tagname = classname = '';
  if (option.value != null && option.value != '') {
    range = tbContentElement.DOM.selection.createRange();
    pNode = range.parentElement();
    if (range.text != null) {
      if (option.value == 'DelFormat') {
        range.execCommand('RemoveFormat', null, null);
        return true;
      } else if (option.value == 'Unlink') {
        range.execCommand('Unlink', null, null);
        return true;
      } else if (option.value == 'Br') {
        range.pasteHTML('<br/>');
        return true;
      } else if (option.value == 'DelHtml') {
        if (tbContentElement.DOM.selection.type == 'Text') {
          var range = tbContentElement.DOM.selection.createRange();
          var pNode = range.parentElement();
          clearHtml(pNode);
        }
        return true;
      }
          
      // Если указано имя элемента и стиль
      if (option.value.indexOf('.') > -1) {
        tagname = option.value.split('.')[0];
        classname = option.value.split('.')[1];
      } else {
        tagname = option.value;
      }
      
      // Если родительский тег равен указанному в правиле, то устанавливаем стиль для него
      if (pNode.nodeName != 'BODY') {
        if (pNode.nodeName == tagname) {
          pNode.className = classname;
        } else  {
          var code = range.htmlText;  
          if (tagname != '' && classname != '') {
            code = '<' + tagname + ' class="' + classname + '">' + range.htmlText + '</' + tagname + '>';         
          } else if (tagname != '' && classname == '') {
            code = '<' + tagname + '>' + range.htmlText + '</' + tagname + '>';         
          } else if (classname != '' && tagname == '') {
            code = '<span class="' + classname + '">' + range.htmlText + '</span>';
          }            
          
          range.pasteHTML(code);	
          range.select();	
	      range.execCommand();     
        } 
      }
    }     
  }   
  tbContentElement.focus();
}
При это происходит следующее, ссылки изменяют свое отображение в редакторе согласно новому классу, а элементы типа p, h* не изменяют т.е. если они при загрузке документа в редактор были в Times New Roman, то после изменения на css класс в котором указан отличный от текущего font-family, внешне ничего не меняется... хотя если смотреть на фронтенде, то изменения видны.

-~{}~ 05.08.04 19:42:

Если добавлять таблицу стилей нужно при помощи DOM, как говорит MiRaClE, то не понимаю почему изменения класса на ссылках отрабатывает нормально.

-~{}~ 06.08.04 19:50:

Страно...
Если таблицу стилей вставлять прямо в загружаемый документ, то все работает как надо...
В чем грабли?
 

slach

Новичок
в смысле если вставлять в внутрь dhtmlEdit теги <style></style> ??? и внутри прописывать классы ? тогда стили накладываются нормально???

вообще есть подозрение, что там действительно бага вызванная конфликом с наложением свойств класса, т.е. когда класс внутри style то это внутреннее пространство dhtmledit'а и внешние классы не влияют, а когда класс через внешний css файл, то происходит что нибудь вроде наложения...

надо MSDN порыть на предмет оного
 

sokol

Zavolga.Net
Автор оригинала: slach
в смысле если вставлять в внутрь dhtmlEdit теги <style></style> ??? и внутри прописывать классы ? тогда стили накладываются нормально???
Именно!
Но я никаких других css файлов и не подключаю.
Не могут же css файлы подключенные к странице содержащей ActiveX накладываться с теми, которые подключаются к загружаемому внутрь контролла документу.
 

sinisha

Новичок
Попробуй все-таки хост прописать в линке. Катринки без хоста не грузяться, а с хостом все в порядке.
 
Сверху