Столкнулся с ситуацией, что упрощенный редактор на форуме работает совсем нестандартно. При вставки данных из буфера с помощью клавиатуры текст прыгает, и визуально довольно сильно тормозит: чем больше текста в редакторе, тем сильнее тормозит.
Причем, если редактор вставить отдельно на страницу, то такой эффект не наблюдается.
Судя по всему проблема в свойстве documentCSS, которое задается в компоненте /bitrix/components/bitrix/forum.post_form/templates/.default/template.php, и потом частично обрабатывается в скрипте Light HTML editor (le_core.js). В стандартном компоненте это свойство не задается.
Дело в том, что скрипт не использует свойства из documentCSS для задания свойств fontFamily, fontSize, lineHeight, которые применяются к body отдельно. Видимо, если эти свойства можно задать там же, при создании объекта редактора, рядом с заданием свойства documentCSS, но получается дублирование функций. По хорошему, скрипт редактора в функции SetConstants должен не просто проверять свойства, но и пытаться получить свойства body, заданные в documentCSS. Либо вообще не использовать хардкод с собственными стилями.
В функции SetEditorContent создается новый документ (не совсем понятно, есть ли в этом необходимость) в области редактирования. В документ записываются данные без стилей:
this.pEditorDocument.write('<ht ml><head></head><body>' + sContent + '</body></html>');
Хотя здесь можно добавить стили systemCSS или documentCSS. После создания документа, когда он уже отобразился со стилями браузера в скрипте добавляются визуальные изменения:
this.pEditorDocument.body.style.padding = "8px";
this.pEditorDocument.body.style.margin = "0";
this.pEditorDocument.body.style.borderWidth = "0";
this.pEditorDocument.body.style.fontFamily = this.arConfig.fontFamily;
this.pEditorDocument.body.style.fontSize = this.arConfig.fontSize;
this.pEditorDocument.body.style.lineHeight = this.arConfig.lineHeight;
Из-за этого получается неприятный эффект. Но, судя по всему, после этого еще подключается стиль systemCSS. В результате при добавлении из буфера через клавиатуру визуально изображение меняется так:
1) появляется новый текст в текущем шрифте;
2) текст полностью меняется по стилю на стандартный в браузере;
3) текст меняется к захаркоденому стилю 12px Helvetica, Verdana, Arial, sans-serif + line-height:16px;
4) после этого добавляются стили частично заданные в documentCSS (если он задан), частично прописанные в systemCSS в самом скрипте редактора.
При этом, при использовании вставки из буфера через правую кнопку мыши ничего из этого не работает. То есть отслеживается нажатие кнопок, а не добавление из буфера (есть некоторые предположения почему так происходит, но ведь в других редакторах этот вопрос был решен).
Я понимаю, что переписывать скрипт редактора никто не будет. Но можно хотя бы убрать заданное свойство documentCSS в шаблоне добавления комментария в форуме? Вероятно это приведет к единообразию и упрощенный редактор будет работать как на обычных страницах, когда он добавляется отдельно.
Спасибо.
P.S. Редактор, в котором я сейчас это написал имеет такой же неприятный эффект.
Причем, если редактор вставить отдельно на страницу, то такой эффект не наблюдается.
Судя по всему проблема в свойстве documentCSS, которое задается в компоненте /bitrix/components/bitrix/forum.post_form/templates/.default/template.php, и потом частично обрабатывается в скрипте Light HTML editor (le_core.js). В стандартном компоненте это свойство не задается.
Дело в том, что скрипт не использует свойства из documentCSS для задания свойств fontFamily, fontSize, lineHeight, которые применяются к body отдельно. Видимо, если эти свойства можно задать там же, при создании объекта редактора, рядом с заданием свойства documentCSS, но получается дублирование функций. По хорошему, скрипт редактора в функции SetConstants должен не просто проверять свойства, но и пытаться получить свойства body, заданные в documentCSS. Либо вообще не использовать хардкод с собственными стилями.
В функции SetEditorContent создается новый документ (не совсем понятно, есть ли в этом необходимость) в области редактирования. В документ записываются данные без стилей:
this.pEditorDocument.write('<ht ml><head></head><body>' + sContent + '</body></html>');
Хотя здесь можно добавить стили systemCSS или documentCSS. После создания документа, когда он уже отобразился со стилями браузера в скрипте добавляются визуальные изменения:
this.pEditorDocument.body.style.padding = "8px";
this.pEditorDocument.body.style.margin = "0";
this.pEditorDocument.body.style.borderWidth = "0";
this.pEditorDocument.body.style.fontFamily = this.arConfig.fontFamily;
this.pEditorDocument.body.style.fontSize = this.arConfig.fontSize;
this.pEditorDocument.body.style.lineHeight = this.arConfig.lineHeight;
Из-за этого получается неприятный эффект. Но, судя по всему, после этого еще подключается стиль systemCSS. В результате при добавлении из буфера через клавиатуру визуально изображение меняется так:
1) появляется новый текст в текущем шрифте;
2) текст полностью меняется по стилю на стандартный в браузере;
3) текст меняется к захаркоденому стилю 12px Helvetica, Verdana, Arial, sans-serif + line-height:16px;
4) после этого добавляются стили частично заданные в documentCSS (если он задан), частично прописанные в systemCSS в самом скрипте редактора.
При этом, при использовании вставки из буфера через правую кнопку мыши ничего из этого не работает. То есть отслеживается нажатие кнопок, а не добавление из буфера (есть некоторые предположения почему так происходит, но ведь в других редакторах этот вопрос был решен).
Я понимаю, что переписывать скрипт редактора никто не будет. Но можно хотя бы убрать заданное свойство documentCSS в шаблоне добавления комментария в форуме? Вероятно это приведет к единообразию и упрощенный редактор будет работать как на обычных страницах, когда он добавляется отдельно.
Спасибо.
P.S. Редактор, в котором я сейчас это написал имеет такой же неприятный эффект.