Как изменение маркировки MDN document.execCommand()
как устаревшего, так и связанное с этим изменение в https://github.com/mdn/browser-compat-data/commit/2d3890a были частично выполнены из-за того, что https://w3c.github.io/editing/ActiveDocuments/execCommand.html имеет большое красное предупреждение с следующие заявления:
Эта спецификация c является неполной, и не ожидается, что она выйдет за рамки чернового статуса. Авторам не следует использовать большинство этих функций напрямую, а вместо этого использовать JavaScript библиотеки редактирования. Функции, описанные в этом документе, не реализованы последовательно или полностью пользовательскими агентами, и не ожидается, что это изменится в обозримом будущем.
Что касается любого метода замены в vanilla JavaScript в том же окне предупреждения указано:
предсказал, что в будущем обе спецификации будут заменены на Content Editable и Input Events
… но, к сожалению, мы не там еще. Таким образом, к сожалению, текущее положение вещей таково, что, хотя у нас еще нет замены, мы знаем, что document.execCommand()
как есть, теперь не работает кросс-браузерно, а браузерные проекты не собираются это исправлять. Вот почему предупреждение MDN гласит:
его использование не рекомендуется ... Постарайтесь избегать его использования.
Так что, как сказано выше, это похоже на случай drag-and-drop: известно, что он ломался разными способами, и так было в течение длительного времени, потому что исправлять его практически невозможно.
И вот почему в окне предупреждения отображается красный c также говорит, что разработчики и авторы:
не должны использовать большинство этих функций напрямую, а вместо этого использовать JavaScript библиотеки редактирования
Доступные JavaScript редактирование библиотек в онлайн-инструментах для форматирования текста, таких как CKEditor и TinyMCE, «замазывает» всю основную неисправность в document.execCommand()
для вас. Если бы вы попытались написать свою собственную надежную обработку для document.execCommand()
в ванили JavaScript с нуля, вы бы в основном - после большой работы и времени - в итоге повторили работу, проделанную для создания JavaScript библиотеки, лежащие в основе этих инструментов.
Итак, суть в следующем: чтобы сэкономить много времени и работы, используйте одну из доступных библиотек.