Удаление форматирования форматированного текста для копирования и вставки? (кроссбраузерный)

Я не уверен, что исправление Javascript или CSS может решить эту проблему на моем сайте. Кажется, это происходит только с Chrome (пока не уверен в IE).

Всякий раз, когда пользователь копирует текст с моего сайта AspDotNetStorefront и вставляет его в документ Word, вставляемый текст имеет серый фон. Есть ли что-нибудь, что я могу сделать на своем сайте, чтобы предотвратить эту функцию вставки форматированного текста в документы?

Я не уверен, что может быть причиной этого, кроме настройки вставки Microsoft Word по умолчанию.


person amyton    schedule 18.07.2014    source источник
comment
как правило, щелкните правой кнопкой мыши вставить как обычный текст или [ctrl]+[shift]+[V]. Вы также можете преобразовать в обычный текст, сначала вставив, а затем вырезав блокнот.   -  person dandavis    schedule 18.07.2014
comment
Спасибо :) Но я пытался найти способ, при котором пользователю не пришлось бы делать ничего из этого.   -  person amyton    schedule 18.07.2014


Ответы (4)


Вы можете перехватить событие копирования, получить выделение без стиля и поместить его в буфер обмена.

document.addEventListener('copy', function(e) {
  const text_only = document.getSelection().toString();
  const clipdata = e.clipboardData || window.clipboardData;  
  clipdata.setData('text/plain', text_only);
  clipdata.setData('text/html', text_only);
  e.preventDefault();
});
person Laizer    schedule 15.05.2019

Вы можете использовать библиотеку clippy https://github.com/mojombo/clippy, чтобы добавить копию в буфер обмена. кнопка. Это может помочь удалить форматирование.

person Pim    schedule 18.07.2014

Если вы не хотите использовать Flash, вы можете попробовать что-то вроде этого, чтобы упростить копирование текста без форматирования:

CSS:

#box {background-color:gray; color:white;width:200px;height:400px;align:center;margin-left:50px;padding:30px}
#copy {position:fixed;top:15px;left:200px;text-decoration:underline}

HTML:

<div id="box">
    <div id="copy" onclick="selectable('p')">Click to select text</div>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla lacinia eros et justo pulvinar pulvinar. Pellentesque nec nisl feugiat, cursus lorem sed, venenatis sem. Curabitur vitae commodo ante, a pellentesque ligula. Morbi sit amet tincidunt ipsum. Fusce rutrum massa at velit dignissim accumsan. Donec hendrerit lorem sed leo viverra, vel cursus sapien lobortis. Praesent quis ligula non justo rhoncus placerat eu non leo. Pellentesque vitae congue enim. Quisque eget turp</p></div> 

JavaScript:

selectable=function(selector){
    var $elem=$(selector);
    innerHTML=$(selector).html()  ;
    $elem.hide();
    $elem.parent().append($('<textarea />').val(innerHTML).css({height:'400px'}));
    $('textarea').select();
};

Код не красивый, он просто для демонстрации концепции.

JSFIDDLE: http://jsfiddle.net/rXG2G/

person Max Heiber    schedule 18.07.2014

Ваш вопрос не имеет ничего общего с javascript, html или css.

Вставка текста в Word сохраняет форматирование по умолчанию. Чтобы вставить без форматирования, пользователю необходимо щелкнуть правой кнопкой мыши документ Word и выполнить команду Paste Special....

person Nathan Boiron    schedule 18.07.2014
comment
Не обязательно. Я пытаюсь найти способ, при котором пользователю не придется выполнять эти шаги (я думаю о тех пользователях, которые не знают, как вставлять специальные). Я хочу справиться с этим на своей стороне, могу ли я использовать что-то вроде ::selection - person amyton; 18.07.2014
comment
В этом случае вы можете использовать кнопку копирования в буфер обмена, как предложил Пим. И когда пользователь нажимает на нее, вы можете скопировать версию текста без форматирования. - person Nathan Boiron; 21.07.2014