Удаление стилей из текста При копировании / вырезании с помощью CSS или Javascript

Йо,

хорошо нудлинг на этом некоторое время:как копировать / вырезать стилизованный текст без привлечения какого-либо багажа стиля (цвет фона, цвет и т. д.)?

пара маршрутов атак, которые были сорваны:

  1. стиль текста по-разному с помощью:: select? не работает, ::стиль не копируется
  2. стиль выбранного текста с помощью jQuery select binding это работает только для входов, а не p, divs
  3. перехватить и удалить стиль, связав событие для копирования / вставки с помощью jQuery? не удается получить доступ к скопированному объекту для удаления материала, попытался использовать e.preventDefault (); затем возвращает объект события, но это тоже не сработало
  4. изменить данные буфера обмена после его сохранения? также нет кости, большинство браузеров не позволит вам в это без вспышки и какой-то подтверждение

в любом случае, мысли? Кажется, это было бы очень полезно для сайтов, которые имеют белые цвета фона.

3 ответов


у меня нет времени кодировать пример сейчас,но вы можете сделать это для вырезания / копирования, вызванного сочетаниями клавиш. Он не будет работать для вырезания / копирования через контекстное меню или Параметры меню редактирования, поскольку он зависит от изменения выбора пользователя до запуска события вырезания или копирования.

действия:

  1. обработки Ctrl-C и Ctrl-X сочетания клавиш и Mac-эквиваленты.
  2. в этом обработчик, создайте внеэкранный элемент (абсолютное положение и влево-10000px, скажем) и скопируйте в него выбранный контент. Вы можете сделать это с помощью window.getSelection().getRangeAt(0).cloneContents(), хотя вам понадобится отдельный код для IE
  3. сделайте все, что хотите, чтобы изменить стиль содержимого элемента за пределами экрана.
  4. переместите выделение, чтобы охватить содержимое элемента вне экрана, чтобы это содержимое было вырезано или скопированный.
  5. добавить краткую задержку (несколько миллисекунд) с помощью window.setTimeout() это вызывает функцию, которая удаляет экранный элемент и восстанавливает исходный выбор.

нужно, чтобы это произошло в браузере... для каждого пользователя?

Если не - и это только для вас - тогда вы можете сделать это с помощью программного обеспечения Clipmate.

http://www.clipmate.com/index.htm

Он имеет функцию, которая удаляет все стайлинг.


после того, как вы запустили копию или вырезать вы можете удалить HTML-теги и только текст с некоторыми regex

var String = Sample.replace(/(<([^>]+)>)/ig,"");

также, если у вас есть сохраненный текст в div с идентификатором " sample_div" Использовать var String=$('sample_div').text(''); чтобы получить только текст внутри