Введение
Live Clipboard - это расширяемый формат данных и набор технологий пользовательского интерфейса, используемых для поддержки операций копирования/вставки между веб-приложениями в браузерах и между веб-приложениями и настольными приложениями. В отличие от типичного копирования/вставки в браузерах, механизм Live Clipboard никогда не нуждается в отображении диалога безопасности конечным пользователем, тем самым обеспечивая более оптимизированный пользовательский интерфейс. Live Clipboard лицензируется по лицензии Creative Commons Attribution ShareAlike (версия 2.5). По состоянию на конец 2009 года обновленные спецификации, файлы Javascript и примерный код можно найти здесь:
Как это работает
Контроль размещает прозрачный (непрозрачность = 0) входный элемент в содержащий div элемент с фоновым png изображением иконки буферной панели. Когда пользователь фокусирует входную информацию, нажимая на нее слева или справа, нажав на вкладку и т. Д. скрипт управления получает данные, которые должны быть скопированы, вызвав функцию OnGetLiveClipboardData. Эта функция обратного вызова реализуется разработчиком страницы и возвращает экземпляр LiveClipboardClass, содержащий данные, которые должны быть скопированы в буфер. Далее, скрипт управления сериализирует эти данные в формате Live Clipboard XML, который он устанавливает как значение входного элемента и выбирает. В этот момент, если пользователь выводит команду "копировать" через контекстное меню, меню редактирования браузера, команду и т. д., выбранное содержимое ввода помещается в буфер. В качестве альтернативы, если пользователь выдает команду "вставка", значение ввода заменяется текущими данными на буферной панели. В этом случае скрипт управления обнаруживает, что значение ввода изменилось, десериализирует значение из формата Live Clipboard XML в экземпляр LiveClipboardClass и передает объект функции OnHandleLiveClipboardData. Функция обратного вызова вставки реализуется разработчиком страницы и отвечает на вставленные данные по желанию. В частности, он может повторяться через существующие форматы данных, применять данные в любом признанном формате к странице, совершать асинхронный вызов веб-серверу для сохранения состояния, настраивать новую подписку на канал и т. Д. Также можно ничего не делать, например, когда ни один из форматов в вставленных данных не действителен для связанных данных. Существуют механизмы, позволяющие использовать события клавиатуры для запуска копирования/вставки. Это достигается путем вызова функций InitiateKeyboardCopyToLiveClipboard и InitiateKeyboardPasteFromLiveClipboard.