На нашей CMS есть ckeditor. Наши конечные пользователи будут вводить несколько длинных статей через этот ckeditor. Нам нужен способ предотвратить перенос строки через дефис в этих статьях.
Есть ли способ предотвратить перенос строки через дефис во всех браузерах?
или у ckeditor есть возможность предотвратить это?
Ответы:
Боюсь, что нет более простого способа сделать это надежно, чем разделить текст на «слова» (последовательности непробельных символов, разделенных пробелами) и обернуть каждое «слово», содержащее дефис, внутри
nobr
разметки. Так что входные данные вродеbla bla foo-bar bla bla
бы обратилисьbla bla <nobr>foo-bar</nobr> bla bla
.Вы можете даже подумать о вставке
nobr
разметки всякий раз, когда «слово» содержит что-либо, кроме букв и цифр. Причина в том, что некоторые браузеры могут даже разрывать строки вроде «2/3» или «f (0)» (см. Мою страницу о странностях разрыва строк в браузерах ).источник
nobr
Тег не является стандартным, и настоятельно рекомендуется W3C. См. W3.org/TR/html5/obsolete.html#non-conforming-featuresnobr
разметка работает во всех браузерах, работает даже при отключенных таблицах стилей и работает независимо от поддержки специальных символов. Есть ли с этим настоящая проблема?Вы можете использовать,
‑
который является НЕПРЕРЫВНЫМ ДЕФИСОМ Unicode (U + 2011).HTML:
‑
или‑
См. Также: http://en.wikipedia.org/wiki/Hyphen#In_computing
источник
-
на‑
.nobr
повсюду оштукатурить бирки, на практике это не очень хорошо работает. IE отображает его в виде короткого тире, Safari добавляет больше места вокруг него, чем обычное тире, а большинство текстовых редакторов отображают его в виде вопросительного знака, поля или другого бессмысленного символа.white-space: nowrap
предложением Дерекердманна. Кстати, на FF / Win7 застенчивая черточка, кажется, превращается в обычную черточку при копировании и вставке вне Firefox, даже если целевое приложение поддерживает Unicode.Одним из решений может быть использование дополнительного
span
тега иwhite-space
свойства CSS. Просто определите такой класс:А затем добавьте диапазон с этим классом вокруг текста с переносом.
Этот подход должен отлично работать во всех браузерах - перечисленные здесь реализации с ошибками предназначены для других значений
white-space
свойства: http://reference.sitepoint.com/css/white-space#compatibilitysectionисточник
white-space: nowrap
его ко всему контейнеру. В противном случае просто отпустите; Во-первых, нет причин предотвращать перенос строк с помощью дефисов для общего контента, а во-вторых, вы не сможете добиться того, чтобы то, что вы ищете, происходило автоматически, если вы не захотите взломать CKEditor.<nobr>
намного понятнее.Вы не можете сделать это без редактирования каждого экземпляра HTML. Следовательно, я написал несколько JS для их замены:
jQuery:
Ванильный JS:
источник
Используйте символ объединения слов (
⁠
) вокруг дефиса. Это работает и в IE.https://en.wikipedia.org/wiki/Word_joiner
исправить определенные дефисы ...
или все ...
источник
Попробуйте этот CSS:
источник