HTML5投放目标支持哪些剪贴板格式?

时间:2017-11-17 10:25:42

标签: javascript windows html5 drag-and-drop

此剪贴板格式列表指的是:

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

我在代码项目中发现了一个名为ClipSpy的很好的实用程序,它允许我查看拖动事件的内容,它看起来像这样:

enter image description here

在浏览器中拖动一段文字时,将其与以下内容进行比较:

enter image description here

我想这个问题现在变得越来越重要:如何在Javascript中访问原始拖动事件数据?

1 个答案:

答案 0 :(得分:0)

在关于&#34;剪贴板API和事件&#34;的W3规范中再看一些之后,我发现了以下内容:

  

clipboardData

     

clipboardData属性是。的实例   DataTransfer接口,允许脚本读取和操作值   在用户启动的复制,剪切和粘贴期间在系统剪贴板上   操作。 关联的拖动数据存储是实时但已过滤的视图   系统剪贴板,公开强制数据类型   实现知道脚本可以安全访问。用于合成   事件,拖动数据存储包含脚本添加的数据   创造了这个活动。

&#34;强制数据类型&#34;它谈到了这里的链接(在同一文件中):

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

其中有一个显然支持的剪贴板格式列表(或者意图由规范的实现支持)。

在这种情况下,我必须得出结论,可能不支持自定义剪贴板格式。