dragstart | 作用于[源元素],當一個元素開始被拖拽的時候觸發(fā),用戶拖拽的元素需要附加dragstart事件。在這個事件中,監(jiān)聽器將設(shè)置與這次拖拽相關(guān)的信息,例如拖動的數(shù)據(jù)和圖像。 |
dragenter | 作用于[源元素],當拖拽中的鼠標進入一個元素的時候觸發(fā)。這個事件的監(jiān)聽器需要指明是否允許在這個區(qū)域釋放鼠標。如果沒有設(shè)置監(jiān)聽器,或者監(jiān)聽器沒有進行操作,則默認不允許釋放。 |
dragover | 作用于[目標元素],當拖拽中的鼠標移動經(jīng)過一個元素的時候觸發(fā)。 |
dragleave | 作用于[目標元素],當拖拽中的鼠標離開元素時觸發(fā)??梢宰鳛榭舍尫欧答伒母吡粱虿迦霕擞浫コ?。 |
drag | 作用于[源元素],事件在元素被拖動時觸發(fā)。 |
drop | 作用于[目標元素],在拖拽操作結(jié)束釋放時于釋放元素上觸發(fā)。 |
dragend | 作用于[源元素],拖拽源在拖拽操作結(jié)束時觸發(fā),不管操作成功與否。 |
(在拖拽的時候只會觸發(fā)拖拽的相關(guān)事件,鼠標事件,例如mousemove,是不會觸發(fā)的)
DataTransfer 對象
在處理拖放操作時,我們需要用到 DataTransfer 對象來保存被拖動的數(shù)據(jù)。 DataTransfer 可以保存一項或多項數(shù)據(jù)、一種或者多種數(shù)據(jù)類型。
屬性
dropEffect | dropEffect [String]指定實際的放置效果,可能的值: copy: 復制到新的位置 move: 移動到新的位置 link: 建立一個源位置到新位置的鏈接 none: 禁止放置(禁止任何操作) |
effectAllowed | [String]指定拖動時被允許的效果,可能的值: copy: 復制到新的位置. move:移動到新的位置 . link:建立一個源位置到新位置的鏈接. copyLink: 允許復制或者鏈接. copyMove: 允許復制或者移動. linkMove: 允許鏈接或者移動. all: 允許所有的操作. none: 禁止所有操作. uninitialized: 缺省值(默認值), 相當于 all. |
files | 包含一個在數(shù)據(jù)傳輸上所有可用的本地文件列表。如果拖動操作不涉及拖動文件,此屬性是一個空列表。 |
types | 保存一個被存儲數(shù)據(jù)的類型列表作為第一項,順序與被添加數(shù)據(jù)的順序一致。如果沒有添加數(shù)據(jù)將返回一個空列表。 |
方法
void addElement(Element element) | 設(shè)置拖動源。通常不需要改變這項,如果修改這項將會影響拖動的哪個節(jié)點和dragend事件的觸發(fā)。默認目標是被拖動的節(jié)點 |
void clearData(String type) | 刪除與給定類型關(guān)聯(lián)的數(shù)據(jù)。類型參數(shù)是可選的。如果類型為空或未指定,將刪除所有類型相關(guān)聯(lián)的數(shù)據(jù)。如果不存在指定類型的數(shù)據(jù),或數(shù)據(jù)傳輸不包含任何數(shù)據(jù),此方法將沒有任何效果。 |
String getData(String type) | 獲得給定類型的數(shù)據(jù),如果給定類型的數(shù)據(jù)不存在或者數(shù)據(jù)轉(zhuǎn)存沒有包涵數(shù)據(jù),方法將返回一個空字符串。 |
void setData(String type,String data) | 為一個給定的類型設(shè)置數(shù)據(jù)。如果該數(shù)據(jù)類型不存在,它將添加到的末尾,這樣類型列表中的最后一個項目將是新的格式。如果已經(jīng)存在的數(shù)據(jù)類型,替換相同的位置的現(xiàn)有數(shù)據(jù)。就是,當更換相同類型的數(shù)據(jù)時,不會更改類型列表的順序。 |
void setDragImage(DOMElement image,long x,long y) | 自定義一個期望的拖動時的圖片。大多數(shù)情況下,這項不用設(shè)置,因為被拖動的節(jié)點被創(chuàng)建成默認圖片。 image 要用作拖動反饋圖像元素 x 圖像內(nèi)的水平偏移量. y 像內(nèi)的垂直偏移量. |
瀏覽器支持
Internet Explorer 9+、Firefox、Opera 12、Chrome 以及 Safari 5+
演示代碼
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Drag & Drop</title> <style type="text/css"> .box { display: inline-block; width: 100px; height: 100px; border: 1px solid #ccccff; background-color: #ccccff; text-align: center; line-height: 100px; } .bin { width: 200px; height: 200px; padding: 10px; border: 1px solid #ccccff; overflow: hidden; float: left; } </style> </head> <body> <div style="display: table;"> <div class="bin"> <div class="box" draggable="true">可拖拽元素</div> </div> <div class="bin"> </div> </div> <script type="text/javascript"> var bins = document.querySelectorAll('.bin'); var boxs = document.querySelectorAll('.box'); var drag = null; for (var i = 0; i < boxs.length; i++) { var box = boxs[i]; box.onselectstart = function() { return false; }; box.ondragstart = function(e) { e.dataTransfer.effectAllowed = 'move'; e.dataTransfer.setData('text/plain', e.target.outerHTML); e.dataTransfer.setDragImage(e.target, 0, 0); drag = this; return true; }; box.ondragend = function(e) { drag = null; return false }; } for (var i = 0; i < bins.length; i++) { var bin = bins[i]; //當拖曳元素進入目標元素 bin.ondragover = function(e) { e.preentDefault(); return true; }; //拖拽元素在目標元素上移動 bin.ondragenter = function(e) { this.style.backgroundColor = '#eeeeff'; return true; }; //拖拽元素在目標元素上離開 bin.ondragleave = function(e) { this.style.backgroundColor = '#fff'; return true; }; //拖拽的元素在目標元素上同時鼠標放開 bin.ondrop = function(e) { if (drag) { drag.parentNode.removeChild(drag); this.appendChild(drag); } this.style.backgroundColor = '#fff'; return false; }; } document.body.ondrop = function(e) { e.preventDefault(); e.stopPropagation(); } </script> </body> </html>
以上就是HTML5中的拖放相關(guān)資料介紹,需要的朋友可以參考一下。
標簽:邯鄲 煙臺 牡丹江 玉溪 內(nèi)蒙古 安慶 晉中 撫州
巨人網(wǎng)絡通訊聲明:本文標題《HTML5中的拖放實現(xiàn)詳解》,本文關(guān)鍵詞 HTML5,中的,拖放,實現(xiàn),詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。