Фильтр выбора на вырезать / копировать с помощью JavaScript? - PullRequest
2 голосов
/ 29 марта 2011

На одном из моих сайтов я использовал , чтобы улучшить перенос слов в веб-браузере.К сожалению, они испорчены копированием, вырезанием и вставкой, поэтому, когда люди копируют с моего сайта, приложение «ar-tic-les-ap-pear» с экстра-хай-фенами действительно раздражает.Я немного преувеличил это здесь, но вы поняли.

Мне бы хотелось иметь способ фильтровать выделение при копировании - в основном возможность удалить их, прежде чем они попадут в буфер обмена. Я подозреваю, что это невозможно, основываясь на том, что я прочитал / исследовал, но подумал, что я спрошу здесь коллективную мудрость, на случай, если я что-то упустил.

AПример псевдокода того, что было бы красиво:

element.oncopy = function (ev) {
    ev.selection.replace(/­/g, '');
    return true; // or ev, I suppose
}

1 Ответ

3 голосов
/ 29 марта 2011

Посмотрите эту статью о событии oncopy. Я думаю, что это именно то, что вам нужно: http://help.dottoro.com/ljwexqxl.php.

Пример # 2 на следующей странице объясняет, как использовать буфер обмена для кросс-браузерного подхода (поскольку только IE имеет доступ к объекту clipboardData, использованному в первой статье): http://help.dottoro.com/ljxundda.php

На этой странице также упоминается, что в некоторых случаях ограничения безопасности могут препятствовать работе кросс-браузерного метода, поэтому некоторые сайты используют Flash для манипулирования буфером обмена. Вот статья, в которой обсуждается этот метод, если он звучит так, как вы хотите: http://www.jeffothy.com/weblog/clipboard-copy/

EDIT

Взгляните на Hyphenator.js . Это JavaScript-метод интеллектуального переноса текста на стороне клиента. Быстро поиграв с демо-версией (, которую можно найти здесь ), она, кажется, оставляет дефисы вне скопированного текста. Возможно, будет неудобно изменить свой контент, чтобы использовать его вместо ­, но похоже, что он достигнет всех ваших целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...