拖放 ( 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> 它看上去也許有些復雜,不過我們可以分別研究拖放事件的不同部分。 設(shè)置元素為可拖放首先,為了使元素可拖動,把 draggable 屬性設(shè)置為 true : <img draggable="true"> 拖動什么 - ondragstart 和 setData()然后,規(guī)定當元素被拖動時,會發(fā)生什么。 在上面的例子中,ondragstart 屬性調(diào)用了一個函數(shù),drag(event),它規(guī)定了被拖動的數(shù)據(jù)。 dataTransfer.setData() 方法設(shè)置被拖數(shù)據(jù)的數(shù)據(jù)類型和值: function drag(ev){ ev.dataTransfer.setData("Text",ev.target.id); } Text 是一個 DOMString 表示要添加到 drag object 的拖動數(shù)據(jù)的類型。值是可拖動元素的 id ("drag1")。 放到何處 - ondragoverondragover 事件規(guī)定在何處放置被拖動的數(shù)據(jù)。 默認地,無法將數(shù)據(jù)/元素放置到其他元素中。如果需要設(shè)置允許放置,我們必須阻止對元素的默認處理方式。 這要通過調(diào)用 ondragover 事件的 event.preventDefault() 方法: event.preventDefault() 進行放置 - ondrop當放置被拖數(shù)據(jù)時,會發(fā)生 drop 事件。 在上面的例子中,ondrop 屬性調(diào)用了一個函數(shù),drop(event): function drop(ev){ ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); } 代碼解釋:
|