CKEditor 4 (открытая версия) больше не поддерживается.
Если вы хотите сохранить доступ к будущим исправлениям безопасности CKEditor 4, ознакомьтесь с моделью расширенной поддержки, которая гарантирует обновления безопасности и критические исправления ошибок до декабря 2026 года. В качестве альтернативы можно обновить версию до CKEditor 5.
Обратите внимание, что этот выпуск является частью модели расширенной поддержки CKEditor 4 и доступен только клиентам, которые приобрели версию редактора LTS (долгосрочная поддержка). Все версии редактора ниже 4.24.0-lts больше нельзя считать безопасными!
Обновления безопасности:
Вы можете узнать больше в соответствующих отчётах по безопасности. Свяжитесь с нами по адресу security@cksource.com, если у вас есть дополнительные вопросы.
Настоятельно рекомендуется обновить версию!
Исправленные проблемы:
Этот выпуск представляет версию редактора LTS («долгосрочная поддержка»), доступную на коммерческих условиях (модель расширенной поддержки).
Если вы приобрели модель расширенной поддержки для CKEditor 4 LTS, пожалуйста, ознакомьтесь с руководством по активации ключа CKEditor 4 LTS.
⚠️ Это последний открытый исходный выпуск CKEditor 4. Как было объявлено в 2018 году, срок службы CKEditor 4 истёк в июне 2023 года.
Новые функции:
config.styleSet
.config.versionCheck
.Исправлены проблемы:
#5437: исправлено: Некорректное отображение выбранных элементов в комбинированных списках. Выбранный элемент не отмечался при каждом открытии комбинированного списка.
#5495: Исправлено: Недостаточное соотношение цветов для ссылок внутри Notifications.
Другие изменения:
Примечание: CKEditor 4.22.1 был выпущен сразу после 4.22.0 для исправления проблем с README на npm и не содержит изменений по сравнению с версией 4.22.0.
Обновления безопасности:
Обнаружена уязвимость межсайтового скриптинга, затрагивающая плагины Iframe Dialog и Media Embed.
Эта уязвимость может повлиять на небольшой процент интеграторов, которые зависят от динамической инициализации/уничтожения редактора. Подробнее см. в рекомендациях GitHub.
Потенциальные критические изменения
В некоторых редких случаях выпуск безопасности может привести к критическим изменениям в вашем приложении. Мы предоставили параметры конфигурации, которые помогут вам устранить любые потенциальные проблемы с обновлением:
— Начиная с версии 4.21, плагин Iframe Dialog по умолчанию применяет атрибут sandbox
, который ограничивает выполнение кода JavaScript в элементе iframe. Чтобы изменить это поведение, настройте параметр config.iframe_attributes
.
— Начиная с версии 4.21, плагин Media Embed по умолчанию регенерирует всё содержимое виджета embed. Чтобы изменить это поведение, настройте параметр config.embed_keepOriginalContent
.
Если вы решите изменить любой из этих параметров, обязательно правильно настройте политику безопасности контента, чтобы избежать потенциальных проблем безопасности, связанных с внедрением элементов iframe на вашу веб-страницу.
Вы можете узнать больше подробностей в соответствующем руководстве по безопасности и связаться с нами, если у вас есть дополнительные вопросы.
Настоятельно рекомендуется обновление!
Новые функции:
config.uploadImage_supportedTypes
, позволяющая изменять форматы изображений, принимаемые плагином Upload Image. Спасибо SilverYoCha!Исправленные проблемы:
Исправлены проблемы:
popstate
и hashchange
в окне, добавленные плагином Maximize, не удалялись при уничтожении экземпляра редактора.change
]. В запросе представлен текст технической направленности из области разработки и тестирования программного обеспечения. Основной язык текста запроса — английский.В результате перевода на русский язык текст выглядит следующим образом:
Событие (https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#event-change) после завершения загрузки приводит к передаче неверных данных в элементы управления формы для интеграционных фреймворков, таких как реактивные формы в Angular (https://angular.io/guide/reactive-forms).
Изменения API:
colorButton_contentsCss
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-colorButton_contentsCss), позволяющая добавлять пользовательский CSS в содержимое меню цветовой кнопки (https://ckeditor.com/cke4/addon/colorbutton). Спасибо mihilion (https://github.com/mihilion)!Исправленные проблемы:
config.baseFloatZIndex
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-baseFloatZIndex) неправильно применяется к родительскому диалогу, когда дочерний диалог закрыт, в результате чего диалоговое окно перекрывает диалог. Спасибо JenoDK (https://github.com/JenoDK)!Новые функции:
config.tabletools_scopedHeaders
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-tabletools_scopedHeaders), управляющая поведением заголовков таблиц с атрибутом [scope]
и без него.config.image2_defaultLockRatio
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-image2_defaultLockRatio), позволяющая установить значение по умолчанию для параметра «Блокировка соотношения сторон» в диалоговом окне Enhanced Image (https://ckeditor.com/cke4/addon/image2).followingSpace
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_mentions_configDefinition.html#property-followingSpace) для плагина упоминаний, иemoji_followingSpace
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-emoji_followingSpace) для плагина эмодзи.Исправленные проблемы:
config.applicationTitle
позволяет настраивать или отключать метку области приложения редактора. Эта опция в сочетании с config.title
предоставляет гораздо лучший контроль над метками редактора, считываемыми программами чтения с экрана.Устранённые проблемы:
Изменения API:
Обновления безопасности:
Устранена уязвимость XSS в базовом модуле, о которой сообщил член команды GitHub Security Lab Кевин Бэкхаус.
Краткое описание проблемы: уязвимость позволяла внедрять искажённый HTML, минуя очистку содержимого, что могло привести к выполнению кода JavaScript. См. CVE-2022-24728
Исправлена уязвимость, связанная с отказом в обслуживании из-за регулярного выражения (ReDoS), в плагине диалогового окна, обнаруженная командой CKEditor 4 во время регулярного аудита безопасности.
Проблема: уязвимость позволяла злоупотреблять регулярным выражением для проверки ввода в диалоговом окне, что могло привести к значительному снижению производительности и зависанию вкладки браузера. Подробнее см. CVE-2022-24729.
Вы можете узнать больше в соответствующем консультативном документе по безопасности и связаться с нами по адресу security@cksource.com, если у вас есть дополнительные вопросы.
Настоятельно рекомендуется обновление!
Основные моменты:
Web Spell Checker прекратил поддержку WebSpellChecker Dialog 31 декабря 2021 года. Это означает, что плагин больше не поддерживается. Поэтому мы решили отказаться от использования и удалить плагин WebSpellChecker Dialog из предустановок CKEditor 4.
Мы настоятельно рекомендуем всем выбрать одно из других доступных решений для проверки орфографии — Spell Check As You Type (SCAYT) или WProofreader.
Исправления:
Другие изменения:
Исправление проблем:
#4934: исправлена проблема, когда активный фокус в вкладках диалоговых окон не виден в режиме высокой контрастности.
#547: исправлена невозможность перетаскивания и перестановки элементов, таких как изображения, внутри таблицы.
#4875: исправлена проблема невозможности удаления нескольких выбранных списков.
#4873: исправлена проблема, при которой вставка содержимого из MS Word и Outlook с горизонтальными линиями препятствует загрузке изображений.
#4952: исправлена проблема, при которой перетаскивание и перестановка изображений внутри ячейки таблицы приводит к добавлению дополнительных элементов.
#4761: исправлена проблема отсутствия некоторых файлов CSS с уникальной временной меткой, используемой для предотвращения кэширования статических ресурсов браузером между выпусками редактора.
#4987: исправлена проблема, при которой Find/Replace не распознаёт более одного пробельного символа.
#5061: исправлена проблема неправильного обращения с Find/Replace с несколькими пробелами при замене текста.
#5004: исправлен MutationObserver, используемый в IFrame Editing Area. Причины утечек памяти.
#4994: Исправлено: плагин Easy Image (https://ckeditor.com/cke4/addon/easyimage) приводил к тому, что контент, вставленный из Word, превращался в изображение.
Изменения API:
#4918: Явно установите значение по умолчанию для параметра config.useComputedState равным true. Спасибо Shabab Karim!
#4761: Добавлена функция CKEDITOR.appendTimestamp().
#4761: Теперь функции CKEDITOR.dom.document#appendStyleSheet() и CKEDITOR.tools.buildStyleHtml() используют недавно добавленную функцию CKEDITOR.appendTimestamp() для правильной обработки кэширования файлов CSS.
Другие изменения:
Из-за регрессии в версии CKEditor 4.17.0, которая была обнаружена только после выпуска и затронула ограниченную область работы, активы CSS, загруженные через относительные ссылки, начали указывать на недопустимое местоположение при загрузке из внешних ресурсов.
Поэтому мы решили немедленно выпустить CKEditor 4.17.1, который исправил эту проблему. Если вы уже обновились до версии v4.17.0, обязательно обновитесь до версии v4.17.1, чтобы избежать этой регрессии.
Исправленные проблемы:
Обновления безопасности:
Исправлена уязвимость XSS в основном модуле, о которой сообщил William Bowling.
Краткое описание проблемы: Уязвимость позволяла внедрять искажённые комментарии HTML, обходя проверку содержимого, что могло привести к выполнению кода JavaScript. Подробнее см. CVE-2021-41165.
Исправлена уязвимость XSS в основном модуле, о которой сообщил Maurice Dauer.
Краткое описание проблемы: Уязвимость позволяла внедрить искажённый HTML, обходя проверку содержимого, что могло привести к выполнению кода JavaScript. Подробнее см. CVE-2021-41164.
Вы можете прочитать более подробную информацию в соответствующем консультативном документе по безопасности и связаться с нами, если у вас есть дополнительные вопросы.
Настоятельно рекомендуется обновление!
Основные моменты:
Adobe прекратила поддержку Flash Player 31 декабря 2020 года и заблокировала запуск Flash-контента в Flash Player начиная с 12 января 2021 года. Мы решили отказаться от плагина Flash в CKEditor 4, чтобы защитить системы пользователей и отговорить их от использования небезопасного программного обеспечения.
Новые функции:
#3433: Помечены обязательные поля в диалоговых окнах символом звёздочки (*).
#4374: Интегрирован плагин Maximize с API истории браузера.
#4461: Введена возможность отложить инициализацию редактора, пока он находится в отдельном элементе DOM. * #4462: добавлена поддержка повторного присоединения элемента контейнера редактора к DOM.
#4612: разрешена вставка изображений в формате Base64 из буфера обмена во всех браузерах, кроме IE.
#4681: разрешено перетаскивание изображений в формате Base64.
#4750: добавлено уведомление о вставке и перетаскивании неподдерживаемых типов файлов в редактор.
#4807: [Chrome] улучшена производительность вставки больших изображений. Спасибо FlowIT-JIT!
#4850: добавлена поддержка загрузки шаблонов контента из HTML-файлов. Спасибо Fynn96!
#4874: добавлен параметр конфигурации config.clipboard_handleImages
для включения и отключения встроенной поддержки вставки и перетаскивания изображений в плагин Clipboard. Спасибо FlowIT-JIT!
#4026: плагин Preview теперь использует свойство editor#title
для заголовка окна предварительного просмотра. Спасибо Ely!
#4467: добавлена поддержка вставки содержимого рядом с блоком виджетов с помощью навигации по клавиатуре. Спасибо bunglegrind!
Исправленные проблемы:
#3757: [Firefox] исправлено: изображения, вставленные из буфера обмена, не вставляются как изображения в кодировке Base64.
#3876: исправлено: плагин Print неправильно печатает ссылки и изображения.
#4444: [Firefox] исправлено: предварительный просмотр печати неправильно загружается из CDN.
#4596: исправлена некорректная обработка значений HSL/HSLA в CKEDITOR.tools.color
.
#4597: исправлена неправильная конвертация цвета для значений HSL/HSLA в CKEDITOR.tools.color
.
#4604: исправлено: CKEDITOR.plugins.clipboard.dataTransfer#getTypes()
не возвращает типы.
#4761: исправлено: не все ресурсы, загружаемые редактором, учитывают ключ кэша.
#4783: исправлено: диалоговое окно Accessibility Help не содержит информации о перемещении фокуса обратно в область редактирования при активации кнопки панели инструментов.
#4790: исправлено: печать страницы вызывается до полной загрузки печатной страницы.
#4874: исправлено: встроенная поддержка вставки и перетаскивания изображений в плагине Clipboard ограничивает сторонние плагины в обработке вставки изображений. Спасибо FlowIT-JIT!
#4888: исправлено: CKEditor 4.16.1 и CKEditor 4.16: исправленные проблемы
Предотвращение дублирования якорей в тексте со стилями.
[#3819] — в Chrome после удаления одного из двух последовательных пробелов в редакторе вместо пробела появляется символ .
[#4666] — для IE представлен полифилл CSS.escape, благодаря limingli0707!
[#3638] — при открытии одного и того же диалога дважды он становится скрытым под обложкой страницы диалога.
[#4247] — исправлено некорректное отображение кнопки цвета Color Button при первом открытии.
[#4555] — исправлена некорректная обработка стилей шрифта с атрибутами при многократном использовании над одним и тем же выделением.
[#4782] — в Firefox возникает TypeError при переключении на представление исходного кода и обратно при включённом плагине Autocomplete.
CKEditor 4.16.1
Исправленные проблемы:
CKEditor 4.16
Обновления безопасности:
Исправлена уязвимость ReDoS в плагине Autolink. Проблема заключалась в том, что можно было выполнить атаку типа ReDoS внутри CKEditor 4, убедив жертву вставить специально созданный текст, похожий на URL, в редактор и нажать Enter или Space.
Исправлена уязвимость ReDoS в плагине Advanced Tab for Dialogs. Проблема заключалась в возможности выполнения атаки типа ReDoS. Обновление настоятельно рекомендуется!
Новые функции:
Исправленные проблемы:
config.fullPage
, когда в содержимом редактора отсутствует тег <body>
.config.width
.Изменения API:
CKEDITOR.tools.color
, который добавляет проверку цветов и методы для преобразования цветов между различными форматами: именованные цвета, HEX, RGB, RGBA, HSL и HSLA.CKEDITOR.plugins.pastetools.filters.word.images
перемещены в пространство имён CKEDITOR.plugins.pastetools.filters.image
. Все плагины CKEDITOR.plugins.pastetools.filters теперь доступны под псевдонимом CKEDITOR.pasteTools.
CKEDITOR 4.15.1
Рекомендуется обновить версию!
Исправленные проблемы:
API изменения:
Другие изменения:
Настоятельно рекомендуется обновление!
Новые функции:
aria-selected="true"
.widget.getClipboardHtml()
для перетаскивания и множественного добавления виджетов.Исправленные проблемы:
editor.extractSelectedHtml()
после выбора всего содержимого.<span>
при повторном применении одного и того же шрифта несколько раз.Изменения API:
textColor
и bgColor
, которые применяют выбранный цвет, выбранный с помощью плагина Color Button.font
и fontSize
, которые применяют выбранный стиль шрифта, выбранный с помощью плагина Font.editor.getSelectedRanges()
. Перевод текста на русский язык:
#3101: Исправлено: метод CKEDITOR.dom.range#_getTableElement()
возвращает null
вместо элемента таблицы для особых случаев.
CKEDITOR.tools.promise
происходит некорректно при наличии загрузчика AMD.CKEDITOR.editor#getData()
при вставке содержимого в редактор.CKEDITOR.tools.object.keys()
не принимает не-объекты.Изменения API:
#3154: Добавлен метод CKEDITOR.tools.array.some()
.
#3245: Добавлен метод CKEDITOR.plugins.undo.UndoManager.addFilterRule()
, который позволяет фильтровать содержимое моментальных снимков отмены.
#2845: Добавлен метод CKEDITOR.tools.normalizeMouseButton()
.
#2975: Добавлен метод CKEDITOR.dom.element#fireEventHandler()
.
#3247: Расширен метод CKEDITOR.tools.bind()
для принятия аргументов для связанных функций.
#3326: Добавлен... CKEditor 4.12.1
Исправленные проблемы:
CKEditor 4.12
Новые функции:
CKEDITOR.config.image2_maxSize
для плагина Enhanced Image, которая позволяет установить максимальный размер, до которого можно изменить размер изображения с помощью средства изменения размера.Исправленные проблемы:
config.colorButton_colors
, не работают корректно.Вот перевод текста на русский язык:
Цвет CSS windowtext
не распознаётся корректно методами CKEDITOR.tools.style.parse
.
CKEDITOR.tools.extend()
не работает с атрибутом свойства объекта DontEnum
.editor.insertHtml()
, editor.insertHtmlIntoRange()
, editor.insertElement()
и editor.insertElementIntoRange()
) загрязняют редактируемый элемент пустыми элементами <span>
.config.enterMode
в значение ENTER_DIV
изменяет вставленный контент.Изменения API:
#1496: Плагин Balloon Toolbar (https://ckeditor.com/cke4/addon/balloontoolbar) предоставляет методы CKEDITOR.ui.balloonToolbar.reposition()
и CKEDITOR.ui.balloonToolbarView.reposition()
.
#2021: Добавлены новые методы CKEDITOR.dom.documentFragment.find()
и CKEDITOR.dom.documentFragment.findOne()
.
#2700: Добавлен метод CKEDITOR.tools.array.find()
.
#3123: Добавлен метод CKEDITOR.tools.object.keys()
.
#3123: Добавлен метод CKEDITOR.tools.object.entries()
.
#3123: Добавлен метод CKEDITOR.tools.object.values()
.
#2821: Свойство CKEDITOR.template#source
теперь может быть функцией, что позволяет возвращать изменённые значения шаблона во время выполнения. Спасибо Jacek Pulit!
#2598: Добавлен метод CKEDITOR.plugins.pagebreak.createElement()
, позволяющий создавать экземпляр элемента CKEDITOR.dom.element
плагина Page Break.
#2748: Улучшены сообщения об ошибках при создании редактора на несуществующем элементе или при попытке создать второй редактор на том же элементе. Спасибо... Брайан Заугг (Byran Zaugg)
#2698: добавлен метод CKEDITOR.htmlParser.element.findOne()
.
#2935: представлен параметр конфигурации CKEDITOR.config.pasteFromWord_keepZeroMargins
, который позволяет сохранять стиль margin-*: 0
, который в противном случае был бы удалён при вставке содержимого с помощью плагина Paste from Word.
#2962: добавлен класс CKEDITOR.tools.promise
.
#2924: добавлен объект CKEDITOR.tools.style.border
, объединяющий вспомогательные функции стиля CSS border.
#2495: плагин Table Selection теперь можно отключить для данной таблицы с помощью атрибута data-cke-tableselection-ignored
.
#2692: плагины теперь могут предоставлять информацию о поддерживаемой среде, реализуя метод pluginDefinition.isSupportedEnvironment()
.
Другие изменения:
arguments.callee
заменены именованными функциональными выражениями, чтобы редактор мог работать в строгом режиме.CKEDITOR.tools.style.parse.border()
объявлен устаревшим в пользу метода CKEDITOR.tools.style.border.fromCssRule()
.CKEDITOR.tools.objectKeys()
объявлен устаревшим в пользу метода CKEDITOR.tools.object.keys()
.Исправленные проблемы:
Другие изменения:
CKEDITOR.getUrl()
при обращении к таблицам стилей.CKEDITOR.getUrl()
при обращении к таблицам стилей.sl_SL
) не работает.Исправленные проблемы:
onAbort
виджета загрузки CKEditor не вызывается при прерывании загрузчика.CKEDITOR.filter.instances
вызывает утечку памяти.Изменения API:
CKEDITOR.ui.panel.block.getItems
теперь также возвращает элементы input
в дополнение к ссылкам.CKEDITOR.tools.convertToPx
теперь преобразует отрицательные значения.insert
определения виджета теперь передаёт editor
и commandData
. Благодаря marcparmet!tools.eventsBuffer
и tools.throttle
выделена в отдельное пространство имён.
tools.eventsBuffer
была выделена в tools.buffers.event
,tools.throttle
была выделена в tools.buffers.throttle
.CKEDITOR.filter
принимает дополнительный параметр rules
, позволяющий связать редактор и фильтр вместе.editor.getCommandKeystroke
принимает дополнительный параметр all
, позволяющий получить массив всех нажатий клавиш команд.hasArrow
, можно идентифицировать по классу CSS .cke_button_expandable
.Другие изменения:
lang.title
из плагина «Буфер обмена».Изменения:
CKEDITOR.command
в качестве параметра.
#1712: Опции конфигурации extraPlugins
, removePlugins
и plugins
позволяют использовать пробелы.
#1802: Опции конфигурации extraPlugins
, removePlugins
и plugins
допускают передачу имён плагинов в виде массива.
#1724: Добавлена опция в функцию getClientRect()
, позволяющая получить абсолютный ограничивающий прямоугольник элемента, то есть положение относительно верхнего левого угла самого верхнего окна просмотра.
#1498: В CKEDITOR.dom.range
добавлен новый метод getClientRects()
, который возвращает список прямоугольников для каждого выбранного элемента.
#1993: Добавлена функция CKEDITOR.tools.throttle()
.
Другие изменения:
gv_GB
) и интерлингва (ia_XR
).alt
для изображения логотипа на вкладке «О программе» в SCAYT. Проблема:Была обнаружена возможность выполнения XSS внутри CKEditor с помощью тега <img>
и специально созданного HTML. Обратите внимание, что стандартные пресеты (Basic/Standard/Full) не включают этот плагин, поэтому вы рискуете только в том случае, если создали собственную сборку и включили этот плагин.
Мы хотели бы поблагодарить команду безопасности Drupal за то, что они обратили на это наше внимание и координировали процесс исправления и выпуска!
CKEditor 4.9.1
Новые функции CKEditor 4.9:
Исправлено:
#595: Исправлено: вставка не работает на мобильных устройствах.
#869: Исправлено: пустой выбор очищает кэшированные данные буфера обмена в редакторе.
#1419: Исправлено: плагин Widget Selection выбирает содержимое редактора с комбинацией клавиш Alt+A в Windows.
#1274: Исправлено: Balloon Toolbar не соответствует одному выбранному изображению с помощью сопоставителя contextDefinition.cssSelector.
#1232: Исправлено: кнопки Balloon Toolbar должны быть зарегистрированы как фокусируемые элементы.
#1342: Исправлено: после события change Balloon Toolbar должен быть перемещён заново.
#1426: [IE8-9] Исправлено: отсутствует фон Balloon Toolbar в скине Kama. Спасибо Кристиану Элмеру!
#1470: Исправлено: Balloon... Панель Balloon не отображается после перетаскивания виджета, к которому она прикреплена.
#1048: Исправлено: панель Balloon неправильно позиционируется при добавлении поля к её непозиционированному родительскому элементу.
#889: Исправлено: в плагинах Image и Enhanced Image появляется неясное сообщение об ошибке для полей ширины и высоты.
#859: Исправлено: невозможно редактировать ссылку после двойного щелчка по тексту ссылки.
#1013: Исправлено: функция Paste from Word работает некорректно с опцией config.forcePasteAsPlainText.
#1356: Исправлено: функция анализа границ не позволяет использовать пробелы в значении цвета.
#1010: Исправлено: CSS-свойство border неправильно развёрнуто, игнорируя стиль border-color.
#1535: Исправлено: контрастность границы наведения мыши на виджет недостаточна.
#1516: Исправлено: поддельный выбор позволяет удалять содержимое в режиме только для чтения с помощью клавиш Backspace и Delete.
#1570: Исправлено: поддельный выбор позволяет вырезать содержимое в режиме только для чтения с помощью сочетания клавиш Ctrl/Cmd + X.
#1363: Исправлено: уведомление о вставке непонятно и может запутать пользователей.
Изменения API:
Другие изменения:
Обновлены плагины SCAYT (проверка орфографии по мере ввода) и WebSpellChecker (WSC):
#1337: Обновлено. Примеры оформления с новым логотипом и цветовой схемой CKEditor 4.
#1591: CKBuilder и языковые инструменты теперь загружаются через HTTPS. Спасибо Августу Детлефсену!
Важные замечания:
config.imageUploadUrl
.Новые функции:
#
), если это необходимо. Это обеспечивает использование допустимого шестнадцатеричного значения цвета при установке цвета границы или фона ячейки таблицы с помощью окна Color Dialog.CKEDITOR.tools.keystrokeToArray()
. Он преобразует нажатие клавиши в строковое представление, возвращая каждое имя ключа как отдельный элемент массива.CKEDITOR.tools.object.merge()
. Он позволяет объединить два объекта, возвращая новый объект со всеми свойствами из обоих объектов, глубоко клонированными.CKEDITOR.tools.array.every()
. Он вызывает заданную тестовую функцию для каждого элемента массива и возвращает true
, если все элементы проходят тест.Исправленные проблемы:
#796: Исправлена проблема: список вставляется из OneNote в обратном порядке.
#834: IE9-11. Исправлена проблема: редактор не сохраняет выбранное состояние переключателей, вставленных плагином Form Elements.
#704: Edge. Исправлена проблема: использование Ctrl/Cmd + Z нарушает структуру виджета.
#591: Исправлена проблема: столбец вставляется в неправильном порядке внутри таблицы, если в любой ячейке есть вертикальный раздел.
#787: Исправлена проблема: вырезание содержимого внутри вложенной таблицы не работает.
#842: Исправлена проблема: стиль списка не восстанавливается при переключении уровня отступа списка в плагине Indent List.
#711: Исправлена проблема: перетаскивание виджетов должно работать только с левой кнопкой мыши.
#862: Исправлена проблема: группа «Стили» в плагине Styles Combo видна только при выделении всего элемента.
#994: Исправлена проблема: опечатка в... CKEDITOR.focusManager.focus() — документация по API, спасибо benjy!
#1014: исправлено: диалог свойств ячеек инструментов таблицы теперь учитывает расширенный фильтр содержимого — невозможно изменить ширину или высоту ячейки, если соответствующие стили отключены.
#877: исправлено: список с пользовательскими маркерами экзотическими символами приводит к сбою редактора при вставке из Word.
#605: исправлено: встроенные виджеты не сохраняют пробелы в конце строки.
#1008: исправлено: сокращённые шестнадцатеричные цвета из опции config.colorButton_colors неправильно выделяются на панели «Цветная кнопка» для текста или фона.
#1094: исправлено: методы upcast определения виджета вызываются для каждого элемента.
#1057: исправлено: плагин Notification перезаписывает API веб-уведомлений из-за утечки в глобальную область видимости.
#1068: исправлено: прослушиватель вставки виджета загрузки игнорирует изменения в uploadWidgetDefinition.
#921: исправлено: CKEditor ошибочно воспринимает внутреннюю копию и вставку как тип «внешняя».
#1213: исправлено: несколько изображений, загруженных с помощью плагина Upload Image, случайным образом дублируются или искажаются.
#532: исправлено: удалена устаревшая ссылка на руководство пользователя из диалога About.
#1221: исправлено: недопустимый CSS загружается плагином Balloon Panel при загрузке config.skin по пользовательскому пути.
#522: исправлено: выбор виджета не удаляется, когда виджет находится внутри ячейки таблицы с включённым плагином Table Selection.
#1027: исправлено: в некоторых ситуациях нельзя добавить несколько изображений в таблицу с плагином Table Selection.
#1069: исправлено: неправильная обработка формы плагином Paste from Word.
#995: исправлено: гиперссылка на изображение вставляется дважды плагином Paste from Word.
#1287: исправлено: плагин Widget генерирует исключение, если он включён в сборку редактора, но не загружен в экземпляр редактора.
Изменения в API:
Новые функции:
CKEDITOR.filter.disallowedContent
.Исправленные проблемы:
change
не срабатывало при вводе первого символа после вставки в редактор. Спасибо Дэниелу Миллеру!border
с нулевой шириной (border: 0px solid #000;
) приводило к тому, что у таблицы устанавливался атрибут границы, равный 1.CKEDITOR.config.enterMode
было установлено значение CKEDITOR.ENTER_BR
.Другие изменения:
CKEDITOR.dom.selection.isCollapsed()
, который является более простым способом проверить, свернута ли выборка.Новые функции:
Исправленные проблемы:
Другие изменения:
Новые функции:
Исправленные проблемы:
CKEditor 4.7
Важные замечания:
Новые функции:
Для ячеек таблицы в плагине Table Tools:
config.enableContextMenu
для включения и отключения контекстного меню (context menu).command
в методе CKEDITOR.editor.getCommandKeystroke()
теперь также принимает имя команды в качестве аргумента.CKEDITOR.dom.range.shrink()
теперь позволяет пропускать фиктивные элементы <br>
.Исправленные проблемы:
<span>
со стилем height
, которые накладывались друг на друга при вставке из Word.Новые функции:
Исправленные проблемы:
Новая функция:
Исправленные ошибки:
[#11064]: Blink, WebKit: исправлена ошибка — нельзя выделить всё содержимое редактора, когда виджет или нередактируемый элемент является первым или последним элементом содержимого. Также исправляет эту ошибку в плагине Select All.
[#14755]: Blink, WebKit, IE8: исправлена ошибка — браузер зависает, когда таблица вставляется вместо выбранного списка с пустым последним элементом.
[#16624]: Исправлено. Улучшен плагин Color Button, который теперь нормализует свойство CSS background
, если оно содержит только значение цвета. Это устраняет проблемы с отсутствием цветов фона при использовании Paste from Word.
#16600: [Blink, WebKit] Исправлено: ошибка, иногда возникающая из-за неинициализированного редактируемого элемента для нескольких экземпляров CKEditor на одной странице.
Новые функции:
config.pasteFromWordRemoveFontStyles
теперь по умолчанию имеет значение false
. Эта опция будет удалена в будущем. Используйте Advanced Content Filter, чтобы воспроизвести эффект установки значения true
.config.pasteFromWordNumberedHeadingToList
и config.pasteFromWordRemoveStyles
были удалены и больше не влияют на вставленный контент.uploaded.width/height
, если они установлены.download
в элементах ссылки (<a>
). Выбор флажка «Принудительная загрузка» в диалоговом окне Link приведёт к автоматической загрузке связанного файла. Спасибо sbusse!additionalRequestParameters
для загрузки файлов, позволяющее отправлять дополнительную информацию об загружаемом файле на сервер.config.image2_altRequired
, позволяющая сделать альтернативный текст обязательным полем. Спасибо [Andrey]. Fedoseev
Исправленные проблемы:
№ 9991: исправлено: «Вставить из Word» должен только нормализовать входные данные.
№ 7209: исправлено: списки с 3 уровнями неправильно вставлены из «Вставить из Word».
№ 14335: исправлено: вставка нумерованного списка, начинающегося со значения, отличного от «1», из Microsoft Word работает некорректно.
№ 14542: исправлено: копирование нумерованного списка из Microsoft Word не сохраняет форматирование списка.
№ 14544: исправлено: при копировании вложенного списка из Microsoft Word получается пустой список.
№ 14660: исправлено: текст из «Вставить из Word» нарушает стилизацию в некоторых случаях.
№ 14867: Firefox: исправлено: текст удаляется при вставке содержимого из Word.
№ 2507: исправлено: «Вставить из Word» не определяет вставку части абзаца.
№ 3336: исправлено: добавляется лишняя пустая строка поверх содержимого, вставленного из Word.
№ 6115: исправлено: когда к таблице, вставленной из Word, применяется направление текста справа налево, на одной стороне отсутствуют границы.
№ 6342: исправлено: «Вставить из Word» фильтрует базовый стиль текста, когда он настроен на использование атрибутов.
№ 6457: IE: исправлено: вставка из Word выполняется очень медленно.
№ 6789: исправлено: стиль mso-list: ignore неправильно обрабатывается при вставке из Word.
№ 7262: исправлено: списки в предварительно отформатированном теле исчезают при вставке из Word.
№ 7662: Opera: исправлено: в теле редактора отображается дополнительный пустой номер/маркер при редактировании многоуровневого списка, вставленного из Word.
№ 7807: исправлено: последний элемент в списке не преобразуется в элемент
№ 7950: IE: исправлено: содержимое, вставленное из Word, отличается от других браузеров.
№ 7982: исправлено: многоуровневые списки разбиваются на более мелкие при вставке из Word.
№ 8231: WebKit, Opera: исправлено: вставка из Word вставляет пустые абзацы.
№ 8266: исправлено: вставка из Word добавляет пустую строку вверху.
№ 8341, № 7646: исправлено: некорректное удаление пустых элементов при очистке содержимого вставки из Word нарушает форматирование содержимого.
№ 8754: Firefox: исправлена неправильная вставка нескольких вложенных списков при вставке из Word.
№ 8983: исправлено: выравнивание теряется при вставке из Word. CKEditor 4.5.10 и 4.5.9: исправленные проблемы
#13362 (Blink, WebKit): Исправлена проблема, при которой активный элемент виджета не кэшировался при потере фокуса, если он находился внутри редактируемого элемента.
#13755 (Edge): Исправлена ошибка, из-за которой вставка изображений не работала.
#13548 (IE): Исправлен баг, при котором нажатие на путь элементов отключало значки «Вырезать» и «Копировать».
#13812: Исправлена ситуация, когда при прерывании загрузки файла оставался заполнитель для изображения.
#14659 (Blink): Исправлена ошибка, при которой содержимое прокручивалось вверх после закрытия диалогового окна в редакторе на основе <div>
.
#14825 (Edge): Исправлено некорректное поведение редактора при фокусировке, связанное с потерей поддержки метода setActive()
.
CKEditor 4.5.10
Исправлены следующие проблемы:
#10750: Редактор корректно экранирует свойство семейства стилей font-style
, удаляя кавычки и пробелы из имён шрифтов.
#14413: Плагин Auto Grow с параметром конфигурации config.autoGrow_onStartup
, установленным в значение true
, работает неправильно для невидимого редактора.
#14451: Числовой идентификатор элемента экранирован неправильно. Спасибо Jakub Chalupa!
#14590: После переключения режимов появляется дополнительная строка разрыва после встроенных элементов. Спасибо dpidcock!
#14539: Программа JAWS читает «выбранный Blank» вместо «выбранного <имя виджета>» при выборе виджета.
#14701: Более точные метки для виджетов Enhanced Image и Placeholder.
#14667 (IE): При удалении цвета фона выделенного текста удаляется цвет фона всего абзаца.
#14252 (IE): Список стилей выпадающего меню не всегда отражает текущий стиль текстовой строки.
#14275 (IE9+): События onerror
и onload
не используются в браузерах, где их можно было бы использовать при динамической загрузке скриптов.
CKEditor 4.5.9
Исправлены следующие проблемы:
#10685: Нечитаемые иконки панели инструментов после обновления до новой версии редактора. Исправлено с помощью 6876179 в ckeditor4 и 6c9189f4 в ckeditor4-presets.
#14573: Отсутствует обработчик перетаскивания CSS виджета, когда есть несколько экземпляров редактора.
#14620: Установка стилей min-height
для элемента <body>
и height
для <html>
нарушает работу плагина Auto Grow.
#14538: Фокус клавиатуры переходит во встроенный элемент <iframe>
.
#14602: Метод dom.element.removeAttribute()
не удаляет все атрибуты, если параметр не задан.
#8679: Улучшенное указание фокуса и возможность стилизации выбранного цвета в палитре цветов. Диалог](https://ckeditor.com/cke4/addon/colordialog).
#11697: Исправлено: при замене содержимого не учитывается регистр букв в диалоговом окне «Найти и заменить».
#13886: Исправлено: некорректная обработка экземпляра CKEDITOR.style
с помощью свойства styles
методом CKEDITOR.filter
.
#14535: Исправлено: исправления синтаксиса CSS. Спасибо mdjdenormandie!
Новые функции:
config.colorButton_enableAutomatic
, позволяющая скрывать опцию «Автоматически» в палитре цветов.Исправленные проблемы:
Новые функции:
Исправленные проблемы:
IndexSizeError
при использовании области редактирования Div и плагинов шаблонов контента.editor.getData()
не работает, когда курсор находится рядом с тегом <hr>
.editor.getData()
выдают ошибку, когда изображение является единственным содержимым редактора.Новые функции:
CKEDITOR.tools.getCookie()
и CKEDITOR.tools.setCookie()
для доступа к файлам cookie.CKEDITOR.tools.getCsrfToken()
. Теперь токен CSRF автоматически отправляется плагинами File Browser и File Tools во время загрузки файлов. Обработчики загрузки на стороне сервера могут проверить его и использовать для дополнительной защиты связи.Другие изменения:
Обновлён SCAYT (Проверка орфографии по мере ввода):
Экспериментальная функциональность GRAYT (Grammar As You Type) (https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-grayt_autoStartup).
Исправлены проблемы:
Исправленные проблемы:
<iframe>
редактора после отсоединения редактора от DOM. Спасибо Stefan Rijnhart!Другие изменения:
Исправленные проблемы:
<textarea>
, хранящем конфигурацию редактора в конфигураторе панели инструментов, должен использоваться моноширинный шрифт.CKEDITOR.plugins.clipboard.isHtmlInExternalDataTransfer
, поскольку проверка должна быть динамической.DataTransfer.getData()
, который теперь работает согласованно во всех браузерах и не удаляет ценное содержимое. Исправлена вставка таблиц из Microsoft Excel в Chrome.dataTransfer
не работала, если в это время были установлены текстовые данные.editor.getSnapshot()
значения, отличного от строки.Исправленные проблемы:
Новые функции:
Исправлены проблемы:
[#13334]: Исправлена ошибка после вложения виджетов и работы с командами отмены/повтора.
[#13118]: Исправлена ошибка, при которой метод editor.getSelectedHtml() выдаёт ошибку при вызове в исходном режиме.
[#13158]: Исправлена ошибка после отмены диалога при создании виджета.
[#13197]: Исправлена проблема, при которой связанный встроенный класс выравнивания Enhanced Image не переносится в оболочку виджета.
[#13199]: Исправлена ошибка: Semantic Embed не поддерживает классы виджетов.
[#13003]: Исправлена ситуация, при которой якоря загружаются при их перемещении путём перетаскивания.
[#13032]: Исправлена ошибка: обновление уведомления после завершения загрузки должно быть отмечено как важное.
[#13300]: Исправлена ошибка: аргумент internalCommit в диалоговом окне Image кажется... Никогда не использовалось.
#13036: Исправлено: Уведомления перемещены на 10 пикселей вправо.
#13280: [IE8] Исправлено: Отмена после перетаскивания встроенного виджета вызывает ошибку.
#13186: Исправлено: Содержимое, помещённое во вложенный редактируемый элемент, не фильтруется с помощью Advanced Content Filter.
#13140: Исправлено: Ошибка при перетаскивании блочного виджета сразу после него самого.
#13176: [IE8] Исправлено: Ошибки при перетаскивании виджетов для встраивания.
#13015: Исправлено: При перетаскивании файла изображения на Enhanced Image происходит перезагрузка страницы.
#13080: Исправлено: Неприятное уведомление отображается, когда ответ содержит HTML-контент.
#13011: [IE8] Исправлено: Якорные ссылки дублируются при перетаскивании в определённых местах.
#13105: Исправлено: Различные проблемы, связанные с методами CKEDITOR.tools.htmlEncode()
и CKEDITOR.tools.htmlDecode()
.
#11976: [Chrome] Исправлено: Копирование и вставка, а также перетаскивание списков из Microsoft Word.
#13128: Исправлено: Различные проблемы с клонированием идентификаторов элементов:
range.cloneContents()
и range.extractContents()
теперь клонирует идентификаторы аналогично их собственным аналогам.cloneId
к вышеупомянутым методам, range.splitBlock()
и element.breakParent()
. Обратите внимание на значения по умолчанию и особое поведение метода extractContents()!
Конфигураторы панели инструментов:
config.removeButtons
игнорируется расширенным конфигуратором панели инструментов.Другие изменения:
CKEDITOR.env.isCompatible
стало чёрным списком, а не белым. Подробнее об изменении можно узнать в руководстве Совместимость с браузерами.CKEDITOR.fileTools.UploadsRepository
. ### CKEditor 4.5 BetaНовые функции:
Функции буфера обмена (copy&paste, drag&drop) и улучшения функций загрузки файлов (#11437).
editor#paste
, и был введён набор новых событий редактора — dragstart
, drop
, dragend
.editor#paste
.editor#paste
может иметь параметр range
, поэтому в слушателе можно изменить позицию вставки или вставить в недоступную для выбора позицию. Также метод editor.insertHtml()
теперь принимает range
в качестве дополнительного параметра.'semantic-content'
в Webkit и Blink для всего вставленного содержимого. Из внешних источников из-за низкого качества HTML, который эти движки помещают в буфер обмена.
Благодаря изменению, описанному в предыдущем пункте, внутренний и перекрёстный редактор вставки безопасен.
Другие изменения и связанные исправления:
#12095: При перетаскивании и копировании виджетов используется тот же метод для получения выбранного HTML, как и в обычном случае. Благодаря этому стили, применяемые к встроенным виджетам, не теряются.*
#11219: Исправлено: Перетаскивание изображения с подписью не вызывает событие editor#paste
.*
#9554: [Webkit Mac] Исправлено: Редактор прокручивается при вставке.*
#9898: [Webkit&Divarea] Исправлено: Вставка вызывает нежелательную прокрутку.*
#11993: [Chrome] Исправлено: Вставка содержимого прокручивает документ.*
#12613: Показывать пользователю, что они не могут перетащить на пользовательский интерфейс редактора (панель инструментов, нижняя панель).*
#12851: [Blink/Webkit] Исправлено: Форматирование исчезает при вставке содержимого в ячейки.*
#12914: Исправлено: Копирование/Вставка таблицы нарушена в редакторе на основе div.*
Поддержка браузеров. Поддержка браузерами соответствующих функций значительно различается (см. http://caniuse.com/clipboard).
Файловые API, необходимые для работы и загрузки файлов, не поддерживаются в Internet Explorer 9 и ниже.*
Только Chrome и Safari на Mac OS поддерживают установку пользовательских элементов данных в буфере обмена, поэтому в настоящее время можно распознать происхождение скопированного контента только в этих браузерах. Все операции перетаскивания можно идентифицировать благодаря новому фасаду Data Transfer.*
Ни один браузер Internet Explorer не поддерживает стандартный API буфера обмена, что приводит к небольшим сбоям, например, когда из-за пределов редактора можно удалить только простой текст. Благодаря новому фасаду Data Transfer внутреннее и перекрёстное перетаскивание поддерживает весь спектр данных.*
Прямой доступ к буферу обмена может быть реализован только в Chrome, Safari на Mac OS, Opera и Firefox. В других браузерах всё ещё необходимо использовать pastebin.
#12875: Образцы и инструменты настройки панели инструментов.
Старый набор образцов, поставляемых с каждым пакетом CKEditor, был заменён новым блестящим одностраничным образцом. Это изменение завершило долгосрочный план, начавшийся с введения CKEditor SDK и раздела Обзор возможностей CKEditor в документации, которые по существу переопределили старые образцы.
Были представлены конфигураторы панели инструментов с живыми превью. Они будут поставляться с каждым пакетом CKEditor и предназначены для помощи в настройке макетов панели инструментов.
#10925: Были введены плагины Media Embed и Semantic Media Embed. Подробнее о новых функциях читайте в статье Встраивание контента.
#10931: Добавлена поддержка вложения виджетов. Теперь можно вставить один виджет в другой виджет, редактируемый вложенным образом. Обратите внимание, что если вложенный редактируемый контент разрешённый контент не определён точно, начиная с CKEditor 4.5 некоторые кнопки виджетов могут стать активными. Эта функция не поддерживается в IE8. Включённые проблемы:
#12018: Исправлено и проверено: Сборка мусора вложенных виджетов.* IT. Изменения и исправления:
#12770: добавлена поддержка передачи данных запуска виджета в качестве аргумента команды виджета. Спасибо Rebrov Boris и Tieme van Veen!
#11583: добавлена поддержка HTML5-атрибута required для различных элементов формы. Спасибо Steven Busse!
Изменения:
#12858: базовая совместимость с браузером Spartan. Полная совместимость будет реализована позже, поскольку на данный момент Spartan всё ещё слишком нестабилен для использования в тестах, и мы видим множество изменений от версии к версии.
#12948: опция config.mathJaxLibrary больше не устанавливается по умолчанию на CDN MathJax. Теперь необходимо настроить её для включения плагина Mathematical Formulas.
#13069: исправлены несоответствия между editable.insertHtml() и editable.insertElement(), когда используется параметр range. Теперь метод editor.insertElement() работает на более высоком уровне, что означает сохранение снимков отмены и установку выделения после вставки. Для поведения editable.insertElement(), характерного для версии до 4.5, используйте метод editable.insertElementIntoRange().
#12870: используйте editor.showNotification() вместо alert() везде, где это возможно. Когда загружен плагин Notification, система уведомлений используется автоматически. В противном случае отображается собственный alert().
#8024: изменено поведение функций Split Cell Vertically и Horizontally плагина Table Tools для большей интуитивности. Спасибо kevinisagit!
#10903: улучшена производительность методов dom.element.addClass(), dom.element.removeClass() и dom.element.hasClass(). Обратите внимание: предыдущая реализация позволяла передавать несколько классов в addClass(), хотя это было лишь побочным эффектом этой реализации. Новая реализация этого не позволяет.
#11856: адаптер jQuery выдаёт осмысленную ошибку, если CKEditor или jQuery не загружены.
Исправленные проблемы:
#11586: исправлено: range.cloneContents() не должен изменять DOM, чтобы не влиять на выделение.
#12148: исправлено: dom.element.getChild() не должен модифицировать переданный массив. ### CKEditor 4.4.8
Обновления безопасности:
Рекомендуется обновить версию!
Исправленные проблемы:
#12503: Blink/Webkit — исправлена некорректная работа функций «Выделить всё» и Backspace или Delete.
#13001: Firefox — исправлено неправильное размещение тега <br />
методом range.fixBlock()
из-за особенностей поведения Firefox.
#13101: IE8 — исправлены ситуации, когда к именам элементов HTML5 добавлялись двоеточия при клонировании.
#12899: исправлен неправильный конец тега для определения горизонтального блока в плагине Dialog User Interface. Спасибо mizafish!
#13254: исправлена невозможность отступа блока после использования плагина Div Editing Area. Спасибо Jonathan Cottrill!
#13268: исправлена ошибка в документации для CKEDITOR.dom.text
. Спасибо Ben Kiefer!
#12739: исправлена потеря стилей ссылки при редактировании без плагина Advanced Tab for Dialogs. Спасибо Віталій Крутько!
#13292: исправлена проблема с тем, что шаблон защиты не работает в атрибуте самозакрывающихся элементов без пробела перед />
. Спасибо Віталій Крутько!
PR#192: исправлена опечатка в имени переменной в плагине Dialog UI, которая приводила к тому, что проверка CKEDITOR.ui.dialog.radio
не работала. Спасибо Florian Ludwig!
#13232: Safari — исправлена неправильная работа метода element.appendText()
для пустых элементов.
#13233: исправлена возможность обработки HTMLDataProcessor атрибутов foo:href
.
#12796: исправлена ситуация, когда плагин Indent List разворачивал родительские элементы <li>
. Спасибо Andrew Stucki!
#12885: добавлена недостающая документация по параметру editor.getData()
.
#11982: исправлена ситуация, когда после нажатия клавиши Enter в вложенном списке в неправильном месте добавлялся маркер.
#13027: исправлена навигация с помощью клавиатуры в диалоговых окнах с несколькими вкладками, не соответствующая инструкциям IBM CI 162 или ARIA Authoring Practices.
#12256: исправлена потеря базовых стилей классов при вставке из Microsoft Word, если базовые стили были настроены на использование классов. CKEditor 4.4.7
Исправленные проблемы:
[#12825]: Исправлена проблема с предотвращением работы плагина Table Resize на элементах вне редактора. Спасибо Paul Martin!
[#12157]: Исправлена потеря форматирования текста при нажатии Tab, когда значение параметра конфигурации config.tabSpaces было больше нуля.
[#12777]: Исправлено: свойство CSS table-layout должно сбрасываться скинами. Спасибо vita10gy!
[#12812]: Исправлена ошибка безопасности, возникающая при использовании Line Utilities во встроенном редакторе, загруженном в междоменный iframe. Спасибо Vitaliy Zurian!
[#12735]: Исправлен параметр config.fillEmptyBlocks, который должен применяться только при выводе данных.
[#10032]: Исправлен фильтр Paste from Word, который выполняется для каждой вставки после использования кнопки.
[#12597] (Blink/WebKit): Исправлена некорректная работа ввода многобайтовых японских символов после Shift+Enter.
[#12387]: Исправлена ошибка, которая возникает, если у скина не определено свойство chameleon и определено config.uiColor.
[#12747] (IE8-10): Исправлена проблема... Открытие выпадающего списка при максимизированном редакторе приводит к некорректному расположению панели списка.
#12850: [IEQM] Исправлено: после фокусировки редактора возникает ошибка.
Обновления безопасности:
Исправлена уязвимость XSS в HTML-парсере, о которой сообщил Мако Кортес (Maco Cortes) (https://www.facebook.com/Maaacoooo).
Суть проблемы: можно было выполнить XSS внутри CKEditor после того, как жертва: (i) переключила CKEditor в режим исходного кода, затем (ii) вставила специально созданный HTML-код, подготовленный злоумышленником, в открытую область исходного кода CKEditor и (iii) переключилась обратно в режим WYSIWYG.
Настоятельно рекомендуется обновление!
Новые функции:
<main>
добавлен в CKEDITOR.dtd
.Исправленные проблемы:
#12506: [Safari] Исправлено: невозможно вставить текст во встроенный редактор, если на странице установлен стиль user-select: none
. Спасибо shaohua!
#12683: Исправлено: фильтр не удаляет пользовательские теги. Спасибо timselier!
#12489 и #12491: Исправлено: различные проблемы, связанные с восстановлением выделения после выполнения операций над символом заполнения. См. исправленные случаи.
#12621: Исправлено: нельзя удалить встроенные стили (жирный, курсив и т. д.) в пустых строках.
#12630: [Chrome] Исправлено: выделение помещается за пределы абзаца при нажатии кнопки «Новая страница» (New Page). Этот патч значительно упростил способ исправления начального выделения (выделения после перезаписи содержимого редактируемого элемента), что могло решить многие связанные проблемы во всех браузерах.
#11647: Исправлено: событие editor.blur
не срабатывает при первом размытии после инициализации встроенного редактора на уже сфокусированном элементе.
#12601: Исправлено: неправильное написание всплывающей подсказки для кнопки зачёркивания (Strikethrough).
#12546: Исправлено: вкладка «Предварительный просмотр» в диалоговом окне «Свойства документа» (Document Properties) всегда отключена.
#12300: Исправлено: событие editor.change
срабатывает при первой навигации по клавишам после ввода текста.
#12141: Исправлено: элементы списка теряются при отступе элемента списка с содержимым, обёрнутым блочным элементом.
#12515: Исправлено: курсор находится в неправильном положении при отмене действия после добавления изображения и ввода некоторого текста.
#12484: [Blink/WebKit] Исправлено: DOM изменяется вне области редактора в определённом случае.
#12688: Улучшены тесты системы стилей и исправлены две незначительные проблемы.
#12403: Исправлено: изменение стиля шрифта не должно приводить к его вложению в предыдущий элемент стиля.
#12609: Исправлено: некорректное использование имени config.magicline_putEverywhere для Magic Line. Фиксированные:
#111739: Исправлены слушатели keypress
, которые не должны использоваться в менеджере отмены. Полностью переписана обработка клавиатуры в менеджере отмены. Также исправлено множество мелких проблем, среди которых:
editor.change
.editor.change
.UndoManager.locked
нарушали строгий режим в плагине Undo.#10916: Исправлен значок Magic Line в средах с направлением текста справа налево.
#11970: [IE] Исправлена проблема, из-за которой событие вставки CKEditor не срабатывало при вставке с помощью Shift+Ins.
#12111: Исправлена проблема, при которой связанные атрибуты изображения не считывались при открытии диалогового окна изображения двойным щелчком.
#10030: [IE] Предотвращено возникновение ошибки «Unspecified Error» в различных случаях, когда IE8-9 не разрешает доступ к document.activeElement
.
#12273: Исправлена проблема, при которой применение блочного стиля в списке описания приводило к его нарушению.
#12218: Исправлена незначительная синтаксическая ошибка в файлах CSS.
#12178: [Blink/WebKit] Исправлена ошибка, при которой итератор не возвращал блок, если выделение находилось в конце него.
#12185: [IE9QM] Исправлена ошибка, возникающая при наведении курсора мыши на полосу прокрутки сфокусированного редактора.
#12215: Исправлена ошибка, при которой разрешение базового пути не распознавало точку с запятой как разделитель запросов.
#12135: Исправлена проблема, при которой функция Remove Format не работала с виджетами.
#12298: [IE11] Исправлена проблема, при которой нажатие ниже <body>
в режиме совместимости больше не сбрасывало выделение на первую строку.
#12204: Исправлена проблема, при которой голосовая метка редактора не зависела от config.title
.
#11915: Исправлена проблема, при которой после включения SCAYT курсор перемещался в начало первого выделенного слова с ошибкой после ввода или вставки в редактор.
[SCAYT]: Исправлена ошибка, которая появлялась в консоли после включения SCAYT и попытки добавить новое изображение.
Другие изменения:
Обновления безопасности:
Исправлена уязвимость XSS в плагине Preview, о которой сообщил Марио Хайдерих из Cure53. Настоятельно рекомендуется обновление! Новые функции:
#12164: Добавлена опция «Выравнивание по ширине» в раскрывающемся списке «Горизонтальное выравнивание» диалогового окна свойств ячейки таблицы. Исправленные проблемы:
#12110: Исправлен сбой редактора после удаления таблицы. Спасибо Алин Пуркару!
#11897: Исправлена проблема: клавиша Enter в пустом элементе списка создаёт новую строку вместо разрыва. Фиксированные: виджеты не отображаются в контекстном меню при щелчке правой кнопкой мыши по виджету.
#11957: фиксированные метки выравнивания в диалоговом окне Enhanced Image не переведены.
#11980: [Blink/WebKit] фиксированный: элементы <span>
создаются при объединении смежных элементов (не свёрнутая выборка).
#12009: [Вложенные виджеты] интеграция с плагином Magic Line.
#11387: фиксированный атрибут role="radiogroup"
должен применяться только к контейнеру радиовходов.
#7975: [IE8] фиксированная: ошибки при попытке выбрать пустую ячейку таблицы.
#11947: [Firefox+IE11] фиксированный: Shift+Enter в списках создаёт два разрыва строки.
#11972: фиксированный: обнаружение функций в методе element.setText()
не должно запускать механизм компоновки.
#7634: фиксированный: плагин Flash Dialog пропускает параметр allowFullScreen
, если он установлен в значение true
.
#11910: фиксированный: Enhanced Image не учитывает config.baseHref
при обновлении размеров изображения.
#11753: фиксированный: неправильное значение метода checkDirty()
после фокусировки или размытия виджета.
#11830: фиксированный: невозможно передать некоторые аргументы в CKBuilder при использовании скрипта /dev/builder/build.sh
.
#11945: фиксированный: плагин Form Elements не должен изменять основной метод.
#11384: [IE9+] фиксированный: IndexSizeError
возникает при вставке в непустой выбор, закреплённый в одном текстовом узле.
Новые функции:
Исправленные проблемы:
dir
для предварительно загруженного языка в CKEDITOR.lang. Спасибо Акашу Мохапатре!<code>
.<title>
.Важные замечания:
Событие editor.beforePaste объявлено устаревшим.
По умолчанию класс изображений с подписью изменился на «image» (был: «caption»). Обратите внимание, что после редактирования в CKEditor версии 4.4+ все существующие изображения класса «caption» («
#11754 (Chrome): исправлено — бесконечный цикл при наличии незакрытых атрибутов в содержимом.*
#11848 (IE): исправлено — editor.insertElement()
вызывает исключение при отсутствии выделения в редакторе.*
#11801: исправлено — якоря редактора недоступны при связывании виджета Enhanced Image.*
#11626: исправлено — Table Resize устанавливает недопустимую ширину столбца.*
#11872: сделано так, чтобы метод element.addClass()
можно было вызывать последовательно, аналогично методу element.removeClass()
.*
#11813: исправлено — ссылка теряется при вставке изображения с подписью и восстановлении моментального снимка отмены (Enhanced Image).*
#11814: исправлено — записи Link и Unlink постоянно отображаются в контекстном меню Enhanced Image.*
#11839 (IE9): исправлено — курсор выскакивает за пределы редактируемой области при изменении размера редактора в исходном режиме.*
#11822 (WebKit): исправлено — редактирование якорей двойным щелчком в некоторых случаях нарушено.*
#11823 (IE8): исправлено — Table Resize выдаёт ошибку из-за полосы прокрутки.*
#11788: исправлено — невозможно изменить язык обратно на Not set в диалоговом окне Code Snippet.*
#11788: исправлено — правила фильтра не применяются внутри элементов с установленным атрибутом contenteditable равным true.*
#11798: исправлено — вставка нередактируемого элемента внутрь ячейки таблицы нарушает работу таблицы.*
#11793: исправлено — раскрывающийся список не «включён», когда он нажимается, пока редактор размыт.*
#11850: исправлено — фальшивые объекты с установленным значением contenteditable, равным false, неправильно преобразуются.*
#11811: исправлено — данные виджета кодируются неправильно, когда передаются атрибуту.*
#11777: исправлена кодировка амперсанда в плагине Mathematical Formulas.*
#11880 (IE8-9): исправлено — связанное изображение имеет толстую границу по умолчанию.*
Другие изменения:
на 4 пробела. *widget.getClasses()
,widget.hasClass()
,widget.applyStyle()
,widget.removeStyle()
,widget.checkStyleActive()
.
Интеграция с фильтром разрешённого контента (Allowed Content Filter) потребовала введения метода CKEDITOR.style.toAllowedContent()
, который может быть реализован пользовательским обработчиком стилей и, если он существует, используется CKEDITOR.filter
для преобразования стиля в правила разрешённого содержимого (allowed content rules).
#11300: Различные изменения в плагине Enhanced Image:
config.image2_captionedClass
для настройки класса изображений с подписями.config.image2_alignClasses
для настройки выравнивания изображений с помощью классов CSS. Если эта настройка определена, редактор создаёт классы вместо встроенных стилей для выровненных изображений.editor.lang.image2.captionPlaceholder
.#11341: Плагин Enhanced Image теперь позволяет добавлять ссылку к любому типу изображения.
#10202: Введена поддержка подстановочных знаков в формате правил разрешённого содержимого.
#10276: Введён чёрный список в фильтре разрешённого контента.
#10480: Введены фрагменты кода с подсветкой кода. На данный момент доступны две версии: стандартная Code Snippet, которая использует библиотеку highlight.js, и Code Snippet GeSHi, которая использует библиотеку GeSHi.
#11737: Введена возможность предотвратить фильтрацию элемента, соответствующего пользовательским критериям (см. filter.addElementCallback()
).
#11532: Введён метод editor.addContentsCss()
, который можно использовать для добавления пользовательских файлов CSS (см. Добавление пользовательских стилей).
#11536: Добавлен метод CKEDITOR.tools.htmlDecode()
для декодирования HTML-сущностей.
#11225: Введено свойство CKEDITOR.tools.transparentImageData
, содержащее прозрачные данные изображения. Изменения:
Задача №11377: унифицировано внутреннее представление пустых якорей с использованием «фальшивых объектов».
Задача №11422: удалены устаревшие элементы кода для Firefox 3.x, Internet Explorer 6 и Opera 12.x.
Задача №5217: создание нового момента отмены при установке данных (включая переключение между режимами). Кроме того:
editable.status
;forceUpdate
для события editor.lockSnapshot
;Обновлён плагин WebSpellChecker до последней версии.
Исправлены ошибки:
Задача №10190: исправлено: удаление стиля блока с помощью метода editor.removeStyle()
должно приводить к появлению абзаца, а не div.
Задача №11727: исправлено: редактор пытается выбрать не редактируемое изображение, на которое был выполнен клик.
CKEditor 4.3.5
Новые функции:
Исправленные ошибки:
Задача №11677: исправлена блокировка нажатий клавиш отмены/повтора в режиме исходного кода.
Задача №11717: плагин Document Properties требует наличия плагина Color Dialog для работы.
CKEditor 4.3.4
Исправленные ошибки:
Задача №11597: IE11: исправлена ошибка, возникающая при попытке открыть предварительный просмотр с помощью клавиатуры.
Задача №11544: заполнители больше не будут повышаться в родительских элементах, не принимающих элементы <span>
.
Задача №8663: исправлен метод element.renameNode
, который не очищает кэш метода element.getName
.
Задача №11574: исправлена проблема, когда клавиша Backspace разрушала структуру DOM, если встроенный редактор размещался в элементе списка.
Задача №11603: исправлена ошибка: Table Resize присоединяется к таблицам вне редактора.
Задачи №9205, №7805 и №8216: исправлены проблемы, связанные с появлением {cke_protected_1}
в данных в различных случаях, когда HTML-комментарии размещаются рядом с "
или '
.
Задача №11635: исправлена ошибка: некоторые атрибуты не защищены перед передачей содержимого через корзину исправления.
Задача №11660: IE: исправлена потеря содержимого таблицы при наличии дополнительной разметки внутри таблицы.
Задача №11641: исправлена ошибка переключения между режимами в классическом редакторе, приводящая к удалению стилей контента для встроенного редактора.
Задача №11568: исправлена ошибка: выпадающий список стилей не включается при изменении выделения.
CKEditor 4.3.3
Исправленная ошибка:
selection.removeAllRanges
теперь ограничен областью действия выделения. * #11104: [IE] Исправлено: различные проблемы со скроллингом и выделением при фокусировке виджетов.editor.checkDirty()
.editor.execCommand()
.widget.doubleclick
больше не отменяется после запуска редактирования.htmlDataProcessor
обнаруживает защищённые атрибуты внутри значений других атрибутов.domObject.removeAllListeners()
не полностью удаляет пользовательские слушатели.selection.getRanges()
не переопределяет кэшированные диапазоны при использовании с аргументом onlyEditables
.config.fullPage
установлено в true
, сущности не кодируются в выводе редактора.Исправленные проблемы:
aria-pressed
.Важные замечания:
Исправленные проблемы:
Новые функции:
10612: Поддержка Internet Explorer 11.
10869: Виджеты: улучшена интеграция с плагином Elements Path.
10886: Виджеты: добавлена всплывающая подсказка к перетаскиваемому элементу.
10933: Виджеты: введена возможность перетаскивания блочных виджетов с помощью плагина Line Utilities.
10936: Изменения в системе виджетов для облегчения интеграции с другими диалоговыми системами.
10895: Enhanced Image: добавлена интеграция файлового браузера.
11002: Добавлена опция draggable, позволяющая отключить поддержку перетаскивания для виджетов.
10937: Улучшения виджета «Математические формулы»:
10862: Плагин Placeholder был переработан в виджет.
10822: Интеграция системы стилей с нередактируемыми элементами (например, виджетами) и их вложенными редактируемыми объектами. Стили не могут изменять нередактируемый контент и применяются во вложенных редактируемых объектах только если это разрешено их типом и фильтром содержимого.
10856: Кнопки меню. Элементы](https://ckeditor.com/cke4/addon/forms) plugin.
#10911: Исправлено: горячие клавиши Alt в браузере больше не блокируются, когда виджет находится в фокусе.
#11082: Исправлено: выбранный виджет не копируется и не вырезается при использовании кнопок панели инструментов или контекстного меню.
#11083: Исправлено применение элементов списка и div для блокировки виджетов.
#10887: Проблемы совместимости с Internet Explorer 8, связанные с системой виджетов.
#11074: Временно отключено перетаскивание виджетов внутри строки, из-за серьёзных ошибок в собственном методе range#moveToPoint
.
#11098: Исправлено: неправильное положение выделения после отмены перетаскивания виджета.
#11110: Исправлено: объекты IFrame и Flash неправильно вставляются в определённых условиях.
#11129: При загрузке данных теряется разрыв страницы.
#11123: [Firefox] Виджет уничтожается после перетаскивания за пределы <body>
.
#11124: Исправлен путь элементов в редакторе с использованием области редактирования Div.
Новые функции:
editor.enterMode
и editor.shiftEnterMode
— нормализованные версии свойств config.enterMode
и config.shiftEnterMode
.editor.setActiveEnterMode()
, событие editor.activeEnterModeChange
и два свойства: editor.activeEnterMode
и editor.activeShiftEnterMode
.editor.setActiveFilter()
, событие editor.activeFilterChange
и свойство editor.activeFilter
.Новые функции:
Метод selection.fake()
.
По умолчанию правила htmlParser.filter
не применяются к не редактируемым элементам (элементам с атрибутом contenteditable
, установленным в false
и их потомкам). Чтобы добавить правило, которое будет применяться ко всем элементам, необходимо передать дополнительный аргумент методу filter.addRules()
.
Появились десятки новых методов, среди которых:
Новый плагин Enhanced Image (https://ckeditor.com/cke4/addon/image2) добавляет виджет с интегрированными подписями изображений, возможностью центрировать изображения и динамическим изменением размера «нажми и перетащи».
Новый плагин Mathematical Formulas (https://ckeditor.com/cke4/addon/mathjax) представляет виджет MathJax.
Новый плагин Language (https://ckeditor.com/cke4/addon/language) реализует кнопку Language на панели инструментов для поддержки WCAG 3.1.2 Language of Parts.
Новый плагин smileys (https://ckeditor.com/cke4/addon/smiley).
Исправленные проблемы:
CKEditor 4.2.2
Исправленные проблемы:
CKEDITOR.plugins.addExternal()
, обрабатывающего пути, включая указанное имя файла.CKEDITOR.tools.isArray()
при работе через фреймы.Перевод:
На два плагина: Indent List и Indent Block.
config.title
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-title) для изменения понятного человеку заголовка редактора.editor.change
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#event-change).required
на элементах <textarea>
— представлено событие editor.required
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#event-required).<textarea>
встроенным редактором.Исправленные проблемы:
editor.setData()
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#method-setData) выбор не делается на редактируемом элементе.Новые функции:
Исправленные проблемы:
config.shiftEnterMode
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-shiftEnterMode).CKEDITOR.dialog.addIframe()
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog.html#static-method-addIframe) неправильно устанавливает размер iframe в диалоговых окнах.Новые функции:
Исправленные проблемы:
editable.insertText()
(https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editable.html#method-insertText) теряет символы при вставке управляющих последовательностей RegExp
.document.domain
.Новые функции:
Исправленные проблемы:
CKEditor 4.1
Исправленные проблемы:
При нажатии Delete или Backspace в пустой ячейке таблицы курсор перемещается в следующую/предыдущую ячейку.
Ошибка при уничтожении экземпляра редактора параллельно с событием mouseup.
Неправильный тип цикла в плагине File Browser.
Неправильное состояние отмены/повтора при запуске.
Плагин Show Blocks не восстанавливается после переключения в режим исходного кода.
HTML-код в <textarea> не должен изменяться htmlDataProcessor.
Плагин Justify должен добавлять элементы в расширенный фильтр содержимого на основе текущего режима ввода.
Расширенный фильтр содержимого блокирует tabSpaces. Унифицировано фильтрация атрибутов data-cke-*.
Менеджер Undo не должен записывать снимки после добавления/удаления заполняющего символа (WebKit).
Пробел после заполняющего символа должен быть защищён (WebKit).
Заполняющий символ не удаляется при keydown в определённых случаях (WebKit).
Стилизованный текст, вставленный из MS Word, вызывает бесконечный цикл.
Метод undoManager.update не обновляет состояние команды.
Невозможно удалить с помощью плагина Remove Format.
Закрытие списков с помощью клавиши Enter не работает с Advanced Content. Фильтр в некоторых случаях.
#10191: унифицированы правила разрешённого контента, поэтому свойство filter.allowedContent
всегда содержит правила в одном формате.
#10224: расширенный фильтр содержимого больше не удаляет непустые элементы <a>
.
Небольшие проблемы при интеграции плагина с расширенным фильтром содержимого:
align
в стиль float
для сохранения обратной совместимости после введения расширенного фильтра содержимого.config.justifyClasses
.Новые функции:
#9829: расширенный фильтр содержимого — активация данных и функций на основе конфигурации редактора. Совершенно новая система фильтрации данных, которая работает в двух режимах:
config.allowedContent
— данные будут фильтровать, а функции редактора (элементы панели инструментов, команды, нажатия клавиш) будут включены, если они разрешены.
См. образец datafiltering.html
, руководства и документацию по API CKEDITOR.filter
.#9387: повторно представлен Shared Spaces — возможность отображать панель инструментов и нижнюю часть редактора в выбранных местах и совместно использовать их различными экземплярами редактора.
#9907: добавлено событие contentPreview
для предварительного просмотра манипуляции данными.
#9713: представлен плагин Source Dialog, который обеспечивает редактирование необработанного HTML для встроенных экземпляров редактора.
Включено в #9829: представлены новые события toHtml
и toDataFormat
, позволяющие лучше интегрироваться с обработкой данных.
#9981: добавлена возможность фильтровать htmlParser.fragment
, htmlParser.element
и т. д. с помощью множества фильтров htmlParser.filter
перед записью структуры в строку HTML.
Включено в #10103:
editor.status
, чтобы было проще проверять текущее состояние редактора.CKEDITOR.TRISTATE_DISABLE
. Оно будет активировано при выполнении определённых условий. editor.instanceReady
или сразу после добавления, если редактор уже инициализирован.#9796: Введён тег <s>
по умолчанию для зачёркивания, который заменяет устаревший <strike>
в HTML5.
Исправлены проблемы:
editor.destroy()
.Исправлены проблемы:
CKEDITOR.getUrl()
с помощью CKEDITOR_GETURL
.stylesSet.add()
, отображаются в неправильном порядке.editor.readOnly
установлен.editor.getData()
, если она установлена через диалоговое окно свойств документа.selectionChange
не срабатывает, когда выбор мыши заканчивается вне редактируемого элемента.editor.checkDirty()
возвращает true
, когда вызывается при загрузке. Удалён устаревший флаг editor.mayBeDirty
.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )