拖放 ( drag 和 drop )是 html5 标准的组成部分 。 ?
拖放
拖放是一种常见的特性,即抓取对象以后拖到另 一个 位置。
在 html5 中,拖放是标准的一部分,任何元素都能够拖放。
浏览器 支持
Internet Explorer 9+,Firefox,Opera,Chrome,和 Safari 支持 拖动。
注意:Safari 5.1.2 不支持 拖动.
HTML5 拖放实例
下面的例子是 一个 简单的拖放实例:
实例
<!DOCTYPE?HTML>
<html>
<head>
<script?type="text/JavaScript">
function?allowDrop(ev){
??ev.preventDefault();
}
function?drag(ev){
??ev.dataTransfer.setData("Text",ev.target.id);
}
function?drop(ev){
??ev.preventDefault();
var?data=ev.dataTransfer.getData("Text");
??ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<div?id="div1"?ondrop="drop(event)"?ondragover="allowDrop(event)"></div>
<img?id="drag1"?src="img_ logo .gif"?draggable="true"?ondragstart="drag(event)"?width="336"?height="69"?/>
</body>
</html>
它看上去也许有些复杂,不过我们可以分别研究拖放事件的不同部分。
设置元素为可拖放
首先,为了使元素可拖动,把 draggable 属性 设置为 true :
<img?draggable="true">
拖动什么 - ondragstart 和 setData()
然后,规定当元素被拖动时,会发生什么。
在上面的例子中,ondragstart 属性 调用 了 一个 函数 ,drag(event),它规定了被拖动的数据。
dataTransfer.setData() 方法 设置被拖数据的数据类型和值:
function?drag(ev){ ????ev.dataTransfer.setData("Text",ev.target.id); }
Text 是 一个 DOMString 表示要 添加 到 drag object 的拖动数据的类型。值是可拖动元素的 id ("drag1")。
放到何处 - ondragover
ondragover 事件规定在何处放置被拖动的数据。
默 认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的 默 认处理方式。
这要通过 调用 ondragover 事件的 event.preventDefault() 方法 :
event.preventDefault()
进行放置 - ondrop
当放置被拖数据时,会发生 drop 事件。
在上面的例子中,ondrop 属性 调用 了 一个 函数 ,drop(event):
function?drop(ev){ ????ev.preventDefault(); var?data=ev.dataTransfer.getData("Text"); ????ev.target.appendChild(document.getElementById(data)); }
代码 解释:
调用 preventDefault() 来避免浏览器对数据的 默 认处理(drop 事件的 默 认行为是以 链接 形式打开)
通过 dataTransfer.getData("Text") 方法 获得被拖的数据。该 方法 将返回在 setData() 方法 中设置为相同类型的任何数据。
被拖数据是被拖元素的 id ("drag1")
把被拖元素追加到放置元素(目标元素)中
查看更多关于HTML5 拖放 ( drag 和 drop )的详细内容...