Показывать одну букву как другую на странице при копировании непереведенного текста

В CSS .someclass { text-transform: uppercase } переводит весь текст с классом someclass в верхний регистр, но когда я выбираю текст, копирую и вставляю его в текстовый редактор или по электронной почте, буквы сохраняют исходный код. Использует ли какая-либо технология веб-стиля на стороне клиента, отличную от CSS, позволить документу определять настраиваемое текстовое преобразование для изменения других вещей, отличных от случая, например от r до w или f до , без применения преобразования, когда пользователь копирует текст?

Ответы на Заменить конкретный символ с помощью CSS, рекомендованного JavaScript. Я бы предпочел использовать некоторую (не CSS) декларативную технологию стилизации вместо script по нескольким причинам:

  • Я хочу, чтобы copy-and-paste возвращал исходный текст, а не преобразованный текст, так же, как и свойство text-transform.
  • Я хочу "Найти внутри страницы" (Ctrl + F), чтобы работать, если пользователь вводит нетрансформированную букву.
  • Мне не хватает статистики о том, сколько зрителей моего сайта использует NoScript или какой-то другой wotelisting плагин script. Но затем искажается тот факт, что я регулярно посещаю онлайн-форум, чьи пользователи часто хвастаются тем, что они не подвержены определенному эксплойту, потому что они не запускают JavaScript
  • A script, который запускает onload, приведет к заметной вспышке неровного содержимого, когда строки будут перезаписаны.

В последнее время мне удалось написать таблицу стилей XSLT, чтобы изменить текстовые узлы в на основе ответа на вопрос о символах whitelisting. (Подсказка: match="html:body//text()" и translate().) Это не соответствует критериям копирования и Ctrl + F, и как сообщается, терпит неудачу в критериях no-FOUC в браузерах, которые пытаются слишком умно, но это должен загружаться почти в каждом крупном браузере, так как IE 6 даже с script отключен. Однако год назад Google попытался убить клиентскую XSLT год назад, удалив ее из Blink. Если Chrome, Opera и другие браузеры, основанные на хромах, перестанут использовать XSLT, пользователи без XSLT, вероятно, превысят число пользователей без script.

Получает шрифт libre и изменяет его, чтобы включить пользовательские формы и лигатуры, которые @font-face, font-feature-settings и font-variant-ligatures могут запускать единственный способ?

1 ответ

CSS - Каскадные таблицы стилей, как следует из названия, используется только для стилизации листов (html-страниц). Фрагмент .someclass { text-transform: uppercase } - это просто стилизация символов (алфавитов) внутри тега с классом someclass. Это нелегко или я могу сказать, что его невозможно достичь, используя только CSS, а не JavaScript.

В соответствии с Зак Saucier комментарий для вашего вопроса: "Нет хорошего способа сделать это с помощью CSS", и я тоже согласен с этим.

Использование JavaScript абсолютно возможно. Но ваши критерии не хотят, чтобы вы это делали.

Мой запрос к вам, попробуйте использовать JavaScript или не используйте CSS.

licensed under cc by-sa 3.0 with attribution.