Перетаскивание в HTMLAdobe AIR 1.0 и более новых версий Для перетаскивания данных в HTML-приложение и из него (или в HTML-файл, отображаемый в HTMLLoader, и из него), могут использоваться события drag HTML. API-интерфейс перетаскивания в HTML позволяет осуществлять перетаскивание в элементы модели DOM и обратно в HTML-содержимом. Примечание. Также могут использоваться API-интерфейсы классов AIR NativeDragEvent и NativeDragManager. Для этого нужно прослушивать события на объекте HTMLLoader, в котором содержится HTML-файл. Тем не менее API-интерфейс HTML больше подходит для работы с HTML-моделью DOM и позволяет контролировать поведение по умолчанию.
Поведение по умолчанию при перетаскиванииВ среде HTML задано поведение по умолчанию для жестов перетаскивания текста, изображений и URL-адресов. С помощью поведения по умолчанию всегда можно перетащить эти типы данных из одного элемента в другой. Однако текст можно перетаскивать только между редактируемыми областями страницы. При перетаскивании текста из одной редактируемой области в другую по умолчанию выполняется перемещение. При перетаскивании текста в редактируемую область страницы из нередактируемой или из другого приложения по умолчанию выполняется копирование. Поведение по умолчанию можно переопределить. Для этого необходимо самостоятельно обрабатывать события перетаскивания. Для отмены поведения по умолчанию необходимо вызвать методы preventDefault() объектов, отправленных в ответ на события перетаскивания. При необходимости для выполнения нужного действия можно вставить данные в целевой элемент перетаскивания и удалить их из источника перетаскивания. По умолчанию пользователь может выделить и перетащить любой текст, изображение или ссылку. Для управления поведением при выделении HTML-элемента можно использовать свойство CSS WebKit -webkit-user-select. Например, если значение свойства -webkit-user-select равно none, то содержимое элемента нельзя выбрать и перетащить. Также для указания того, можно ли перетащить элемент целиком, может использоваться свойство CSS -webkit-user-drag. Однако разные компоненты элемента будут обрабатываться по-разному. Пользователь по-прежнему сможет перетащить отдельный фрагмент текста. Дополнительную информацию см. в разделе CSS в AIR. События перетаскивания в HTMLНиже перечислены события, отправляемые элементом-инициатором, начинающим перетаскивание:
Целевой элемент перетаскивания отправляет следующие события:
Объект события, отправляемый в ответ на эти события, похож на событие mouse. Свойства события mouse, такие как (clientX, clientY) и (screenX, screenY), могут использоваться для определения положения мыши. Самое важное свойство объекта события drag — это dataTransfer: в нем содержатся перетаскиваемые данные. Сам объект dataTransfer включает ряд свойств и методов:
Типы MIME при перетаскивании в HTMLС объектом dataTransfer события перетаскивания в HTML может использоваться ряд типов MIME:
Также можно использовать и другие строки MIME, включая строки, определенные приложением. Однако другие приложения могут не распознать или не суметь использовать эти данные. Следите, чтобы данные, добавляемые к объекту dataTransfer, были нужного формата. Важная информация. Доступ к отпущенным файлам имеет только код, выполняемый в изолированной программной среде. Попытка чтения или задания любого свойства объекта File вне изолированной программной среды приложения приводит к ошибке безопасности. Дополнительную информацию см. в разделе Обработка перемещения файлов в изолированной программной среде HTML вне приложений.
Эффекты перетаскивания в HTMLИнициатор жеста перетаскивания может ограничивать эффекты путем задания свойства dataTransfer.effectAllowed в обработчике события dragstart. Ниже перечислены используемые строковые значения:
Целевой элемент перетаскивания может задавать свойство dataTransfer.dropEffect, чтобы указать действие, выполняемое по завершении перетаскивания. Если одним из разрешенных действий является отпускание, то система отображает соответствующий курсор, означающий копирование, перемещение или создание ссылки. В противном случае отображается курсор unavailable. Если эффект отпускания не задан целевым элементом, пользователь может выбрать любое из разрешенных действий с помощью клавиш-модификаторов. Значение dropEffect может быть задано в обработчиках событий dragover и dragenter: function doDragStart(event) {
event.dataTransfer.setData("text/plain","Text to drag");
event.dataTransfer.effectAllowed = "copyMove";
}
function doDragOver(event) {
event.dataTransfer.dropEffect = "copy";
}
function doDragEnter(event) {
event.dataTransfer.dropEffect = "copy";
}
Примечание. Хотя свойство dropEffect всегда должно задаваться в обработчике события dragenter, помните, что следующее событие dragover сбрасывает значения свойства до исходных (по умолчанию). В ответ на оба событие необходимо задать dropEffect.
|
|