Используя область монтажа от JavaScript

Safari, Инструментальная панель и основанные на WebKit приложения включают поддержку, чтобы позволить Вам обработать сокращение, копию и операции вставки Вашего содержимого HTML.

Введение в операции области монтажа JavaScript

Поддержка операций области монтажа реализована в JavaScript и может быть применена к любому элементу Вашей страницы HTML. Для обработки этих операций Вы обеспечиваете функции для обработки любого из шести событий JavaScript:

Можно обеспечить обработчики для 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 доступных данных.