JCE / TinyMCE - продолжает пытаться исправить действительный и неправильный HTML


9

Из всех редакторов Joomla, которые мы использовали, JCE лучше всего подходит для наших целей и клиентов. Но есть несколько проблем с редактором, которые могут вызвать проблемы, когда мы что-то кодируем, затем он переключается на wysiwyg, и редактор пытается «исправить» наш совершенно правильный HTML.

Прежде чем вы начнете задавать вопросы - да, мы установили его, чтобы разрешить все эти элементы, которые JCE любит ограничивать, и нет, он НЕ настроен для проверки / очистки html. Единственные ограничения, которые у нас есть, - это вставка контента в редактор.

Выставка:

<a href="#"></a>

Это исчезнет при переключении редактора и обратно. Заменено на:

<p>&nbsp;</p>

Приложение Б:

<a id="#nameofanchor"></a>

Изменения к:

<p>&nbsp;</p>

Приложение C:

<div><a id="#nameofanchor"></a></div>

Изменения к:

<div>&nbsp;</div>

Приложение D:

<a id="hello" class="link">Hello</a>

Изменения к:

<p><a id="hello" class="link"></a>Hello</p>

Приложение E:

<a href="#">
<div>
<h2>Our Work</h2>
</div>
</a>

Изменения к:

<p><a href="#"></a></p>
<div>
<h2><a href="#">Our Work</a></h2>
</div>
<p>&nbsp;</p>

Теперь мы хотим использовать идентификатор вместо имени для нашего якоря, потому что он действителен в HTML5, тогда как имя технически - нет. Кроме того, в каком юниверсе находится недопустимое назначение для ссылки?

Кроме того, теперь, когда вполне законно заключать div со ссылками, почему JCE также удаляет их?

Это просто настройка, по которой я скучаю? Кто-нибудь знает, как я могу использовать редактор, чтобы мы могли кодировать так, как нам нужно, в редакторе, но наши клиенты не могут его разрушить, просто сохраняя в wysiwyg?

Изменить: я проверил это в Chrome, Firefox и Safari. Не думайте, что это как-то связано с браузером.

Изменить: я проверил это с настройками контейнера. И Контейнер Абзаца и Абзац при вводе и Div Контейнер и Разделение при вводе вызывают это. Другие два, без контейнера и абзаца при вводе, без контейнера и переноса строки при вводе, не вызывают его. Проблема в том, что мне нужна первая настройка! Как бы ни было полезно дать клиентам преимущество сомнения, им просто нельзя доверять, чтобы они следовали инструкциям и добавляли форматирование абзацев в свой текст.

Подтверждено: это также происходит с TinyMCE.

Итак - мы знаем, что вызывает это - параметр Контейнер абзаца - теперь, как мы можем обойти это, поддерживая этот параметр живым?


1
Рад, что это не только я.
Крейг

После наших предыдущих обсуждений и заключения о том, что это исходит из функции обтекания элементов JCE, я не уверен, что это на самом деле вызывает беспокойство. Если вы доверяете своему клиенту возможность добавлять фрагменты html, как указано выше, переключая состояние редактора, почему вы не будете доверять им, что они обернут свой контент соответствующими тегами <p>?
FFrewin

Наши клиенты не добавляют HTML. Мы пишем html, они используют сторону редактора - как только редактор переключается, он разрушает наш совершенно правильный html.
Фэй

В любом случае, если вы предоставляете клиенту доступ для редактирования страницы, полной html, то, так или иначе, есть большая вероятность, что клиент может уничтожить ваш html. А как насчет использования менеджера шаблонов JCE или других «макро» тегов, которые сделают грязную работу по добавлению нужной разметки?
FFrewin

Ответы:


7

Я использую JCE Editor на всех наших сайтах, но мы также начали устанавливать Sourcerer от NoNumbers. Это дает простую кнопку INSERT CODE для редактора JCE, который защищает его от изменения.

http://www.nonumber.nl/extensions/sourcerer


БЛАГОДАРЮ ВАС. Это прекрасно, у нас уже есть nonumber, потому что это фантастика, я не знал, что это так. Это потрясающе.
Фэй

1
Не должно быть необходимости использовать Sourcerer для добавления HTML.
BodgeIT

Ааа, и все же я должен, или JCE удаляет совершенно правильный HTML.
Фэй

2

Есть некоторые секретные настройки для JCE. Я знаю, что следующие настройки перестают &nbsp;добавляться к пустым элементам div, возможно, используются для очистки поплавков, что вызывает проблемы с высотой строки при рендеринге:

In the Editor Global Configuration, add:
remove_div_padding:1 
to Custom Configuration Variables. 

Я ожидаю, что есть больше, которые могут контролировать любой аспект редактора.


1

Я думаю, что это должны быть настройки типографии в: Профиль -> Параметры редактора -> Типография . Попробуйте установить для элемента контейнера и ключа ввода значение NoContainer & LineBreak при вводе, чтобы узнать, применяет ли он все еще какие-либо изменения в вашем html.

Также помните, что в настройке HTML Validation есть настройка для каждого профиля Editor и что Joomla также предоставляет глобальный фильтр на странице глобальной конфигурации, установленной группой пользователей. Убедитесь, что там нет настроек для каждой группы пользователей.


Да, я был во всех профилях редактора и т. Д. У меня все настроено правильно, без HTML. Замена контейнера может решить эту проблему, но это вызовет еще одну проблему, столь же проблемную. Если клиент может добавить текстовое содержимое, которое не заключено в теги абзаца, тогда форматирование его текста будет другим. Мы тоже этого не хотим. Я протестирую его, чтобы увидеть, вызывает ли это ту же проблему с якорем, но что касается добавления самих тегов абзаца, это своего рода норма для курса.
Фэй

Да, это делают настройки контейнера, но, как я уже сказал, это большая проблема для наших клиентов, которые не могут вставить и иметь автоматический тег абзаца для переноса их содержимого.
Фэй

Я думаю, что это происходит потому, что ваши примеры кода содержат разрывы строк, что является своего рода «правилом» для JCE создавать абзацы. Для этого должен быть такой критерий. Ваш клиент собирается вставить такие фрагменты HTML в редакторе?
FFrewin

Наши клиенты не собираются использовать html, но мы все еще пишем html за тем, что они делают. Мы создаем области для них, чтобы вставить / напечатать прямой контент. Кроме того - если вы хотите набрать html в одну строку вместо того, чтобы организовывать, как описано выше, я тоже это попробовал. Я получаю точно такие же результаты.
Фэй

0

Такое поведение не является уникальным для JCE. TinyMCE ведет себя так же. Это поведение может не ограничиваться TinyMCE, это может быть поведение DOM браузера.

На самом деле JCE пытается сохранить некоторые пустые теги, метод, который используется для заполнения пробела.

https://github.com/widgetfactory/jce-editor/blob/master/editor/tiny_mce/plugins/cleanup/editor_plugin.js


Не буду врать, я понятия не имею, что это значит. Вы можете сломать это немного больше? Что я смотрю в этой ссылке? Что вы имеете в виду блокнот с пробелом? Добавление неразрывного пробела к приведенным выше примерам кода не меняет конечных результатов, я тщательно их протестировал.
Фэй

Я переключил свой редактор по умолчанию на TinMCE, который поставляется с предустановленной Joomla, и протестировал Приложение A. Он также удалял теги при переключении между редактором WYSIWYG и представлениями Source. то есть это поведение не является уникальным для JCE. Следовательно, мне интересно, если это не является уникальным и для TinyMCE, и, возможно, то же самое может произойти при использовании возможности браузеров для редактирования на месте. Ссылка на код JCE была строкой 129, где между начальными и конечными тегами используется неразрывный пробел. Это работает для меня как в JCE, так и в TinyMCE. Странный.
Питер Уайзман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.