拖放 ( drag 和 drop )是 html5 標(biāo)準(zhǔn)的組成部分 。 拖放拖放是一種常見(jiàn)的特性,即抓取對(duì)象以后拖到另一個(gè)位置。 在 html5 中,拖放是標(biāo)準(zhǔn)的一部分,任何元素都能夠拖放。 瀏覽器支持Internet Explorer 9+,Firefox,Opera,Chrome,和 Safari 支持拖動(dòng)。 注意:Safari 5.1.2不支持拖動(dòng). HTML5 拖放實(shí)例下面的例子是一個(gè)簡(jiǎn)單的拖放實(shí)例: 實(shí)例<!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> 它看上去也許有些復(fù)雜,不過(guò)我們可以分別研究拖放事件的不同部分。 設(shè)置元素為可拖放首先,為了使元素可拖動(dòng),把 draggable 屬性設(shè)置為 true : <img draggable="true"> 拖動(dòng)什么 - ondragstart 和 setData()然后,規(guī)定當(dāng)元素被拖動(dòng)時(shí),會(huì)發(fā)生什么。 在上面的例子中,ondragstart 屬性調(diào)用了一個(gè)函數(shù),drag(event),它規(guī)定了被拖動(dòng)的數(shù)據(jù)。 dataTransfer.setData() 方法設(shè)置被拖數(shù)據(jù)的數(shù)據(jù)類(lèi)型和值: function drag(ev){ ev.dataTransfer.setData("Text",ev.target.id); } Text 是一個(gè) DOMString 表示要添加到 drag object 的拖動(dòng)數(shù)據(jù)的類(lèi)型。值是可拖動(dòng)元素的 id ("drag1")。 放到何處 - ondragoverondragover 事件規(guī)定在何處放置被拖動(dòng)的數(shù)據(jù)。 默認(rèn)地,無(wú)法將數(shù)據(jù)/元素放置到其他元素中。如果需要設(shè)置允許放置,我們必須阻止對(duì)元素的默認(rèn)處理方式。 這要通過(guò)調(diào)用 ondragover 事件的 event.preventDefault() 方法: event.preventDefault() 進(jìn)行放置 - ondrop當(dāng)放置被拖數(shù)據(jù)時(shí),會(huì)發(fā)生 drop 事件。 在上面的例子中,ondrop 屬性調(diào)用了一個(gè)函數(shù),drop(event): function drop(ev){ ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); } 代碼解釋?zhuān)?/p>
|