在html5中要实现拖放操做,相对于之前经过鼠标操做实现,要简单得多,数据安全性也更有保障。只须要如下几步便可。javascript
draggable
属性,若是是文件拖放。dragstart
中初始化相关的数据信息,主要是DataTransfer
对象。dragover
事件中,取消其默认操做。drop
事件中,处理接受到的数据。dragend
事件中,作善后工做。若没有则能够省略。大体代码以下:html
<div id="source" draggable="draggable">source</div> <div id="target">target</div> <script type="text/javascript"> var target = document.getElementById('target'); var source = document.getElementById('source'); source.ondragstart = function(e){ e.dataTransfer.effectAllowed = 'copyMove'; e.dataTransfer.setData('test', 'testData'); }; target.ondragover = function(e){ e.dataTransfer.dropEffect = 'move'; e.preventDefault(); // 不能少 }; target.ondrop = function(e){ var elem = document.createElement('a'); elem.innerHTML = e.dataTransfer.getData('test'); e.target.appendChild(elem); }; </script>
draggable属性html5
draggable是一个枚举属性,用于指定一个标签是否能够被拖拽。有如下四种取值:java
true
:表示此元素可拖拽。false
:表示此元素不可拖拽。auto
:除img
和带href
的标签a
标签表示可拖拽外,其它标签均表示不可拖拽。ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据。安全
dataTransfer.setData() 方法设置被拖数据的数据类型和值。app
ondragover 事件规定在何处放置被拖动的数据。函数
默认地,没法将数据/元素放置到其余元素中。若是须要设置容许放置,咱们必须阻止对元素的默认处理方式。spa
这要经过调用 ondragover 事件的 event.preventDefault() 方法。code