JavaScript drop 事件
此事件在拖動源元素的滑鼠指標位於目標元素內,並鬆開滑鼠時觸發。
drop事件主要特點簡單羅列如下:
(1).事件處理函式註冊於目標元素之上。
(2).拖動源元素的滑鼠指標位於目標元素之內,並鬆開時觸發。
此事件與dragend事件類似, 兩個事件的主要區別簡述如下:
(1).drop事件處理函式註冊於目標元素,dragend註冊於源元素。
(2).dragend事件只要鬆開滑鼠即可觸發,無論指標在何處。
關於事件處理函式註冊,可以參閱如何註冊事件處理函式一章節。
下面通過一段程式碼例項對此事件進行一下簡單演示:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> p{ width:100px; height:50px; background-color:red; } #box { width:200px; height:200px; background-color:#ccc; } .over { border: 1px dashed #000; transform: scale(0.8, 0.8); } </style> <script> window.onload = () =>{ let odiv=document.getElementById("box"); let op=document.getElementById("p"); op.ondragstart = (ev) => { ev.dataTransfer.setData("Text",ev.target.id); } odiv.ondragenter = (ev) => { ev.target.classList.add('over'); } odiv.ondragover = (ev) => { ev.preventDefault(); } odiv.ondragleave = (ev) => { ev.target.classList.remove('over'); } odiv.ondrop = (ev) => { ev.preventDefault(); ev.stopPropagation(); ev.target.classList.remove('over'); let data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); } } </script> </head> <body> <p draggable="true" id="p"></p> <div id="box"></div> </body> </html>
上述程式碼對拖動效果進行了簡單演示,下面對drop事件進行一下分析。
[JavaScript] 純文字檢視 複製程式碼odiv.ondrop = (ev) => { ev.preventDefault(); ev.stopPropagation(); ev.target.classList.remove('over'); let data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); }
程式碼分析如下:
(1).事件在拖動源元素的滑鼠指標位於目標元素內,並鬆開滑鼠時觸發。
(2).如果是從作業系統拖動檔案到瀏覽器,那麼會在新標籤開啟資源。
(3).ev.preventDefault()可以阻止上述瀏覽器預設行為,上述例項可以省略此方法。
(4).火狐中,拖動完成時會開啟一個新選項卡,stopPropagation()阻止此現象。
(5).如果目標元素是文字框等表單元素,則無需呼叫stopPropagation(),比如將文字拖入文字框。
(6).ev.target.classList.remove('over')可以將目標元素恢復原狀。
(7). let data=ev.dataTransfer.getData("Text")獲取源元素的id屬性值。
(8).ev.target.appendChild(document.getElementById(data))將源元素追加到目標元素中。
相關文章
- drag &drop 拖拽事件事件
- drag & drop 拖拽事件事件
- JavaScript事件JavaScript事件
- JavaScript 事件JavaScript事件
- JavaScript resize 事件JavaScript事件
- JavaScript mouseup 事件JavaScript事件
- JavaScript mouseover 事件JavaScript事件
- JavaScript mousedown 事件JavaScript事件
- JavaScript focus 事件JavaScript事件
- JavaScript reset 事件JavaScript事件
- JavaScript blur 事件JavaScript事件
- JavaScript invalid 事件JavaScript事件
- JavaScript input 事件JavaScript事件
- JavaScript keyup 事件JavaScript事件
- JavaScript 事件冒泡JavaScript事件
- JavaScript submit 事件JavaScriptMIT事件
- JavaScript change 事件JavaScript事件
- JavaScript mouseleave 事件JavaScript事件
- JavaScript mousemove 事件JavaScript事件
- JavaScript keypress 事件JavaScript事件
- JavaScript keydown 事件JavaScript事件
- JavaScript select 事件JavaScript事件
- JavaScript contextmenu 事件JavaScriptContext事件
- JavaScript dblclick 事件JavaScript事件
- JavaScript click 事件JavaScript事件
- JavaScript abort事件JavaScript事件
- JavaScript animationEnd 事件JavaScript事件
- JavaScript transitionEnd 事件JavaScript事件
- JavaScript dragstart 事件JavaScript事件
- JavaScript drag 事件JavaScript事件
- JavaScript dragend 事件JavaScript事件
- JavaScript dragenter 事件JavaScript事件
- JavaScript dragover 事件JavaScriptGo事件
- JavaScript dragleave 事件JavaScript事件
- JavaScript storage 事件JavaScript事件
- JavaScript mouseenter 事件JavaScript事件
- JavaScript animationIteration 事件JavaScript事件
- JavaScript animationStart 事件JavaScript事件