Используя область монтажа от JavaScript
Safari, Инструментальная панель и основанные на WebKit приложения включают поддержку, чтобы позволить Вам обработать сокращение, копию и операции вставки Вашего содержимого HTML.
Введение в операции области монтажа JavaScript
Поддержка операций области монтажа реализована в JavaScript и может быть применена к любому элементу Вашей страницы HTML. Для обработки этих операций Вы обеспечиваете функции для обработки любого из шести событий JavaScript:
onbeforecut
oncut
onbeforecopy
oncopy
onbeforepaste
onpaste
Можно обеспечить обработчики для oncut
, oncopy
, и onpaste
события, если Вы хотите определить пользовательское поведение для соответствующих операций. Можно также обеспечить обработчики для onbeforecut
, onbeforecopy
, и onbeforepaste
события, если Вы хотите управлять целевыми данными, прежде чем они будут фактически сокращены, скопированы или вставлены.
Если Ваш oncut
, oncopy
, и onpaste
обработчики выполняют фактическую работу сокращения, копирования или вставки данных, Ваш обработчик должен вызвать preventDefault
метод объекта-события. Этот метод не берет параметров и уведомляет WebKit, что Ваш обработчик заботится о перемещении данных к или от области монтажа. Если Вы не вызываете этот метод, WebKit берет на себя ответственность за перемещение данных. Вы не должны вызывать preventDefault
когда события имеют место, если Вы просто хотите быть уведомленными.
Добавление обработчиков области монтажа к элементам
Можно добавить обработчики для событий области монтажа к любому элементу в веб-странице. Когда работа области монтажа начинается, WebKit ищет надлежащий обработчик на элементе, который является фокусом работы. Если тот элемент не определяет обработчик, WebKit идет по списку родительских элементов, пока это не находит делающий тот. (Если никакой элемент не определяет обработчик, WebKit применяет поведение по умолчанию.) Для демонстрации этого процесса предположите, что у Вас есть следующий основной HTML в веб-странице:
<body oncut="MyBodyCutFunction()" |
oncopy="MyBodyCopyFunction()" |
onpaste="MyBodyPasteFunction()"> |
<span onpaste="MySpanPasteFunction()">Cut, copy, or paste here.</span> |
</body> |
Если пользователь инициирует сокращение или работу копии на тексте в span
тег, вызовы WebKit MyBodyCutFunction
или MyBodyCopyFunction
обработать событие. Однако, если пользователь пытается вставить текст в тег span, WebKit вызывает MySpanPasteFunction
обработать событие. MyBodyPasteFunction
функция была бы вызвана, только если операция вставки произошла за пределами span
тег.
Управление данными области монтажа
Когда событие имеет место, Ваш обработчик использует clipboardData
объект, присоединенный к событию, чтобы добраться и установить данные буфера обмена. Этот объект определяет clearData
, getData
, и setData
методы, чтобы позволить Вам очищаться, доберитесь и установите данные буфера обмена.
Типы данных поддержки внедрения области монтажа WebKit вне тех, которые обычно находятся в документах HTML. Когда Вы вызываете также getData
или setData
, Вы указываете тип MIME целевых данных. Для типов это распознает, включая стандартные типы, найденные в документах HTML, WebKit отображает тип на известный тип области монтажа. Однако можно также указать типы MIME, соответствующие любым пользовательским форматам данных, которые понимает приложение. Для большинства операций области монтажа Вы, вероятно, захотите работать с простыми типами данных, такими как простой текст или список URIs.
WebKit также поддерживает возможность отправить те же данные на область монтажа в многократных форматах. Для добавления другого формата Вы просто вызываете setData
один раз для каждого формата, указывая тип MIME формата и строку данных, соответствующих тому типу.
Для получения списка типов, в настоящее время доступных на области монтажа, можно использовать types
свойство clipboardData
объект. Это свойство содержит массив строк с типами MIME доступных данных.