Инструменты разработчика · Редактор HTML WYSIWYG
Форматированный текст в буфере обмена: как форматирование перемещается между приложениями
· Фон
HTML буфер обмена довольный и редактируемый
Объясняет несколько форматов, которые форматированное текстовое копирование помещает в буфер обмена, как каждое приложение выбирает один из них и почему вставленная разметка никогда не является точной копией.
Одна и та же копия, три разные вставки — открывается с содержимым, вставленным в браузер, терминал и почтовый клиент.
Один скопированный абзац может появиться в виде форматированного содержимого в редакторе браузера и в виде неформатированных символов в терминале, поскольку пункты назначения запрашивают разные представления. Обработчик вставки ToolAcre запрашивает у буфера обмена HTML и простой текст, а затем следует фиксированной ветке, вместо того чтобы доверять вставке браузера по умолчанию.
Если присутствует HTML, исходный богатый фрагмент никогда не выходит на поверхность напрямую. Сначала он проходит через дезинфицирующее средство. Если HTML отсутствует, вставляется обычный текст. Это местное правило объясняет поведение этого редактора, не утверждая, что каждый почтовый клиент, операционная система или офисный пакет определяет приоритет данных буфера обмена.
Этот обработчик вставки читает text/html и text/plain;, более широкие варианты буфера обмена находятся за пределами доказательств.
Буфер обмена может содержать несколько представлений одного выделения. Эта реализация явно работает с `text/html` и `text/plain`. Он не перечисляет RTF, изображения, ссылки на файлы или форматы, специфичные для приложения, поэтому их не следует подразумевать как поддерживаемые входные данные.
Две строки могут кодировать разную информацию. Обычный текст содержит символы и разрывы строк, а HTML может содержать абзацы, списки, выделения и ссылки, а также нежелательные атрибуты. ToolAcre предпочитает структуру, если она доступна, но сужает ее за счет элемента, атрибута и политики URL перед вставкой.
Кто пишет вариант HTML — объясняет, что его генерирует исходное приложение, поэтому вставки Word и Google Docs выглядят так по-разному.
Исходное приложение создает представление HTML, поэтому две визуально похожие копии могут предоставлять разные оболочки и представление. ToolAcre не идентифицирует производителя. Он применяет одно общее правило: неподдерживаемые оболочки и атрибуты удаляются независимо от происхождения.
Это предотвращает превращение неиспользованных каталогов внутренних компонентов Word или Google Docs в претензии на продукт. Список удаления сообщает автору, что именно отклонил этот синтаксический анализатор. Если важна верность исходному приложению, возьмите реальное приспособление из поддерживаемой среды и протестируйте его, а не полагайтесь на общий пример статьи.
Выбор пункта назначения — включает порядок предпочтений и ярлыки для вставки в виде обычного текста.
Пункт назначения выбирает по коду. Здесь побеждает непустой HTML; в противном случае используется простой текст. На панели инструментов нет переключателя «вставить как обычный текст», а источники репозитория не определяют поведение сочетаний клавиш. Браузеры и операционные системы могут предлагать такие жесты независимо.
Обработка отбрасывания отражает ту же идею с DataTransfer: предотвратить значение по умолчанию, прочитать HTML и простые значения, очистить HTML перед `insertHTML` или отправить простые символы через `insertText`. В отличие от вставки, путь перетаскивания не отображает такое же подробное количество удалений, хотя при обновлении видимый документ по-прежнему обновляется.
Метаданные фрагмента платформы не анализируются явно этой реализацией.
Некоторые платформы оборачивают фрагменты буфера обмена HTML в метаданные или маркеры, но ToolAcre не содержит явного синтаксического анализатора для именованного формата платформы. Его токенизатор видит строку, возвращаемую `getData("text/html")`, и обрабатывает распознанную разметку. Поэтому в этой статье опущен синтаксис заголовка, смещения и гарантии, специфичные для операционной системы.
Если в качестве комментариев отображаются оболочки, комментарии удаляются. Если метаданные поступают за пределы распознанного HTML, необходимо протестировать поведение. Качественной возможности недостаточно, чтобы заявить о поддержке или отклонении протокола платформы, который код никогда не называет.
Рабочий пример: сравнение насыщенной полезной нагрузки буфера обмена с простой полезной нагрузкой.
Скопируйте неконфиденциальный абзац, содержащий сильный текст, краткий список и ссылку https. Богатая вставка может сохранить эти разрешенные структуры, удалить исходный стиль и добавить rel к ссылке. Проверьте источник и предупреждение об удалении. Затем вставьте простое представление в среду, которая не предоставляет HTML.
Простой результат содержит символы, вставленные при выделении; любая структура блока определяется хостом редактирования браузера, а не восстанавливается из исходного HTML. Сравнивайте слова и границы строк отдельно от элементов. Упражнение демонстрирует трансляцию между представлениями, а не побайтовое копирование.
Что здесь не распространяется — API буфера обмена, изображения, ярлыки платформы или матрицы разрешений.
В этой статье не рассматривается программирование navigator.clipboard, запросы разрешений, изображения буфера обмена, файлы, RTF, мобильные ярлыки или кросс-платформенная матрица предпочтений. Он также не утверждает, что перехваченная богатая паста делает произвольную враждебную HTML безопасной для публикации.
Дезинфицирующее средство ToolAcre узкое и учитывает различия парсера. Его песочница блокирует выполнение в локальном предварительном просмотре, но скопированный HTML покидает эту среду. Принимающему серверу требуется соответствующее средство очистки и политика вывода на основе парсера, в то время как пользователям следует избегать вставки секретов на любую непроверенную страницу.
Вывод: вставка — это перевод, а не копия — обобщает модель и то, как редактор HTML WYSIWYG ToolAcre позволяет вам проверить результат перевода.
Богатая вставка — это перевод: источник записывает представления, пункт назначения выбирает одно, а ToolAcre фильтрует выбранный HTML перед вставкой. Понимание этой последовательности объясняет, почему форматирование может исчезнуть, не считая буфер обмена сломанным.
Используйте репрезентативные фикстуры, проверяйте полученный источник и сохраняйте исходный контент, если очистка может лишить его смысла. Обычная паста полезна для восстановления презентации, а насыщенная паста позволяет сохранить структуру. Ни один из этих путей не освобождает пункт назначения от санитарных требований, испытаний на совместимость или редакционной проверки.