Удаление стилей из текста При копировании / вырезании с помощью CSS или Javascript
Йо,
хорошо нудлинг на этом некоторое время:как копировать / вырезать стилизованный текст без привлечения какого-либо багажа стиля (цвет фона, цвет и т. д.)?
пара маршрутов атак, которые были сорваны:
- стиль текста по-разному с помощью:: select? не работает, ::стиль не копируется
- стиль выбранного текста с помощью jQuery select binding это работает только для входов, а не p, divs
- перехватить и удалить стиль, связав событие для копирования / вставки с помощью jQuery? не удается получить доступ к скопированному объекту для удаления материала, попытался использовать e.preventDefault (); затем возвращает объект события, но это тоже не сработало
- изменить данные буфера обмена после его сохранения? также нет кости, большинство браузеров не позволит вам в это без вспышки и какой-то подтверждение
в любом случае, мысли? Кажется, это было бы очень полезно для сайтов, которые имеют белые цвета фона.
3 ответов
у меня нет времени кодировать пример сейчас,но вы можете сделать это для вырезания / копирования, вызванного сочетаниями клавиш. Он не будет работать для вырезания / копирования через контекстное меню или Параметры меню редактирования, поскольку он зависит от изменения выбора пользователя до запуска события вырезания или копирования.
действия:
- обработки Ctrl-C и Ctrl-X сочетания клавиш и Mac-эквиваленты.
- в этом обработчик, создайте внеэкранный элемент (абсолютное положение и влево-10000px, скажем) и скопируйте в него выбранный контент. Вы можете сделать это с помощью
window.getSelection().getRangeAt(0).cloneContents()
, хотя вам понадобится отдельный код для IE - сделайте все, что хотите, чтобы изменить стиль содержимого элемента за пределами экрана.
- переместите выделение, чтобы охватить содержимое элемента вне экрана, чтобы это содержимое было вырезано или скопированный.
- добавить краткую задержку (несколько миллисекунд) с помощью
window.setTimeout()
это вызывает функцию, которая удаляет экранный элемент и восстанавливает исходный выбор.
нужно, чтобы это произошло в браузере... для каждого пользователя?
Если не - и это только для вас - тогда вы можете сделать это с помощью программного обеспечения Clipmate.
http://www.clipmate.com/index.htm
Он имеет функцию, которая удаляет все стайлинг.
после того, как вы запустили копию или вырезать вы можете удалить HTML-теги и только текст с некоторыми regex
var String = Sample.replace(/(<([^>]+)>)/ig,"");
также, если у вас есть сохраненный текст в div с идентификатором " sample_div"
Использовать var String=$('sample_div').text('');
чтобы получить только текст внутри