Както вече споменахме, модифицирането на данните в клипборда е или ограничено до конкретни браузъри, или изисква потребителят да предостави достъп за модифициране на клипборда. Можете да заобиколите това
- Добавете манипулатор на събитие към събитието
oncopy
- Намерете селекцията
- Добавете предварително/добавете съдържание към съдържанието
- Променете диапазона за избор, за да включите добавеното/предварително съдържание
- Изчакайте действието за копиране да премине
- Премахнете добавеното/предварително съдържание
Замислих се с този метод и създадох плъгин, който прави точно това. Все още е предварителна версия и досега е тествана само на FF4/Chrome 11/IE8 (и IE определено трябва да свърши още малко работа). Някои от хубавите неща, които можете да правите с този метод, е, че можете лесно например да обвиете кавички за публикации във форума в [quote=USER]content[/quote]
и да зададете потребител въз основа на коя публикация да се копира. По подразбиране скриптът винаги избира DOM стила, но не и действителния HTML, така че ако например копирате удебелено съдържание, то ще бъде удебелено, ако бъде поставено в редактор с форматиран текст, но само текст, ако се използва в текстови редактори (премахване на html таговете).
Предварителното съдържание е значително по-лесно с този метод в сравнение с добавянето, в който случай все още не съм сигурен дали е напълно функционален. За IE можете директно да промените клипборда, но има някои проблеми, например при избиране на цялата страница или ако искате да превключите съдържанието на обогатено копие. Не съм имал възможността да направя по-нататъшно тестване на браузъра, но изглежда, че това е поне работещо решение за по-нови браузъри.
Пример: http://hertzen.com/experiments/jquery.plugin.clipboard/
Друг пример: http://hertzen.com/experiments/jquery.plugin.clipboard/thread.html
Изходен код: https://github.com/niklasvh/jquery.plugin.clipboard
person
Niklas
schedule
14.06.2011