Какие форматы буфера обмена поддерживаются в HTML5?

1

Этот список форматов буфера обмена относится:

https://msdn.microsoft.com/en-us/library/windows/desktop/ff729168(v=vs.85).aspx

Я создал целевую страницу для удаления HTML5 на странице и играл, перетаскивая данные из различных приложений в нее.

Когда я отлаживаю Javascript, я могу найти данные в объекте event.dataTransfer для каждого. Единственное исключение было при перетаскивании из дерева управления в SAP GUI, что я и на самом деле после. В этом случае список dataTransfer.item пуст, как и список.type. Вызов dataTransfer.getData() ничего не возвращает.

Я пробовал это в IE, Chrome и Firefox с тем же результатом.

Мое расследование в этом привело меня к мысли, что существует ограничение на поддержку определенных форматов буфера обмена для HTML5. Какие форматы поддерживаются?

То, что я хотел бы сделать, это получить содержимое буфера обмена (как показано ниже в первом обновлении).

ОБНОВЛЕНИЕ 2

Ниже приведен код страницы. Я установил точки останова в функции drop() откуда я могу проанализировать объект события.

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style> #drop_target {width: 350px; height: 70px; padding: 10px; border: 1px solid #aaaaaa; } </style>
</head>
<body>
<div id="drop_target"></div>
</body>
<script>

var drop_target   = document.getElementById('drop_target');

function allowDrop(ev) {
    ev.preventDefault();
}
function drop(ev) {
  ev.preventDefault();
  console.log(ev.dataTransfer.types.length);
  console.log(ev.dataTransfer.getData("text"));
}

drop_target.addEventListener('dragover', allowDrop, false);
drop_target.addEventListener('dragenter', allowDrop, false);
drop_target.addEventListener('drop', drop, false);

</script>
</html>

ОБНОВЛЕНИЕ 1

Я нашел полезную утилиту в проекте Code под названием ClipSpy, который позволяет мне видеть содержимое события перетаскивания, и он выглядит так:

Изображение 174551

Сравните это с чем-то вроде следующего, перетаскивая фрагмент текста из моего браузера:

Изображение 174551

Думаю, теперь вопрос становится более похожим на: Как я могу получить доступ к данным необработанного события перетаскивания в Javascript?

Теги:
drag-and-drop

1 ответ

0

Посмотрев еще немного на спецификацию W3 относительно "API и событий в Clipboard", я натолкнулся на следующее:

clipboardData

Атрибут clipboardData является экземпляром интерфейса DataTransfer, который позволяет скрипту считывать и обрабатывать значения в системном буфере обмена во время инициированных пользователем операций копирования, вырезания и вставки. Связанное хранилище данных перетаскивания представляет собой живой, но отфильтрованный вид системного буфера обмена, отображающий обязательные типы данных, реализация которых знает, что сценарий может безопасно получить доступ. Для синтетических событий хранилище данных перетаскивания содержит данные, добавленные скриптом, который создал событие.

В "обязательных типах данных" здесь говорится о ссылках (в том же документе):

https://www.w3.org/TR/clipboard-apis/#mandatory-data-types

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню