Копировать / вставлять в JavaScript?

Я знаю, что этот вопрос задавали уже миллион раз, но я не мог найти хорошего современного решения.

я реализовал свое собственное меню, чтобы предоставить пользователю возможность вырезать, копировать и вставлять в мое WebApp. Но я не уверен, как на самом деле работать с буфером обмена в Firefox, IE, Safari/Chrome.

Спасибо за помощь.

2 ответов


ты попробовать : http://ericphan.info/development/cross-browser-copy-and-paste-with-jquery-copy/

обновление: Ссылка недоступна, поэтому я копирую содержимое из кэша:

Сценарий

Я работал над клиентским проектом для SSW, когда клиент сообщил об ошибке в веб-приложении.

ошибка связана с динамически генерируемой ссылкой mailto, которая обновляется при выборе нескольких сотрудников. Клиент сообщал об ошибке когда он выбрал более 10 сотрудников для электронной почты. Его почтовый клиент Lotus Notes выдал сообщение об ошибке:

ошибка обработки аргументов командной строки

оказывается, что спецификация mailto имеет предел, и почтовые клиенты также имеют предел. Lotus Notes обрабатывает только 240 символов в ссылке mailto и других современные почтовые клиенты, такие как Outlook 2007, поддерживают 2083 символа - максимальную длину URL

это объясняет расхождение в тестировании. Исправление-JQuery на помощь

поскольку это ограничение спецификации HTML, нам нужно было другое решение для удовлетворения требования клиента "я хочу иметь возможность выбирать нескольких сотрудников и отправлять им всем электронное письмо"

мы могли бы создать форму электронной почты, которая использовала SMTP для отправки электронной почты , но клиент хотел использовать Lotus Notes в качестве почтового клиента.

мы закончили тем, что изменили кнопку "электронная почта", чтобы скопировать все письма (разделенные запятыми) в буфер обмена и открыли новое окно электронной почты. Все, что нужно было сделать клиенту, это нажать CTRL + V и вставить письма в поле "Кому". Это было самое быстрое и экономичное решение, которое дало клиенту гибкость в использовании собственного почтового клиента.

существует плагин JQuery под названием jquery.копия, предоставленная cross browser copy и вставьте с помощью файла flash (swf). Это похоже на то, как работает синтаксический маркер в моем блоге.

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

$.copy("some text to copy");

приятно и легко ;)

Примечание: вам может потребоваться изменить путь к SWF-файлу в jquery.копировать.js, чтобы заставить это работать


Я только что написал подробный технический блоге на эту самую тему (я работаю на Lucidchart, и мы недавно сделали капитальный ремонт в нашем буфере обмена). Включено в сообщение эта скрипка, который является рабочим примером копирования и вставки через JavaScript.

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

плохая новость в том, что использование собственного контекстного меню для копирования и вставки проблематично. Даже Google не может обойти это (попробуйте использовать копию контекстного меню или вставить в Google Docs в Firefox). Вы сможете заставить его работать без особых проблем в IE. Это связано с тем, что вы можете получить доступ к объекту clipboardData в любое время из Javascript через:

window.clipboardData

(однако при попытке сделать это за пределами события вырезания, копирования или вставки системы IE предложит пользователю предоставить буфер обмена веб-приложения разрешение.)

в Chrome вы можете создать расширение chrome, которое даст вашему веб-приложению буфер обмена permissions (это то, что мы делаем для Lucidchart с). Затем для пользователей с установленным расширением вам просто нужно будет запустить системное событие самостоятельно, когда они нажмут опцию меню:

document.execCommand('copy');

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