JavaScript dragstart 事件
此事件會在源元素開始被拖拽時觸發,註冊於源元素之上,從作業系統向瀏覽器拖拽資料不會觸發。
dragstart事件處理函式中常見的操作和注意點羅列如下:
(1).DataTransfer物件大多數配置在此事件處理函式中完成。
(2).不能在事件處理函式中呼叫preventDefault()方法,否則無法拖動。
(3).此事件觸發後,其他非HTML5標準拖拽滑鼠事件將不會觸發,比如mouseover和mousemove等。
關於事件處理函式註冊,可以參閱如何註冊事件處理函式一章節。
下面通過程式碼例項對此事件進行一下演示:
[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:300px; height:100px; background-color:#ccc; } </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.ondragover = (ev) => { ev.preventDefault(); } odiv.ondrop = (ev) => { ev.preventDefault(); ev.stopPropagation(); 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>
上述程式碼實現了簡單的拖拽效果,有拖拽相關事件的的實用,下面僅介紹一下dragstart。
[JavaScript] 純文字檢視 複製程式碼op.ondragstart = (ev) => { ev.dataTransfer.setData("Text",ev.target.id); }
當頂部紅色元素開始拖動時觸發dragstart事件。
在此事件處理函式中,可以對DataTransfer物件進行相關配置。
比如可以傳遞資料,上述程式碼通過setData()方法將源元素的id屬性值儲存起來。
特別說明:setData()方法只能在dragstart事件處理函式中呼叫,否則無效。
也可以在事件處理函式中通過effectAllowed設定可以允許的拖拽行為。
從作業系統向瀏覽器拖拽檔案不會觸發此事件:
這一點非常好理解,因為從作業系統向瀏覽器拖拽檔案操作,一開始無法獲取檔案。
比如我們可以通過document.getElementById()方法獲取文件內源元素,但是如何獲取作業系統上的源元素呢。
關於從作業系統向瀏覽器拖拽檔案可以參閱JavaScript 向瀏覽器拖入圖片預覽一章節。
相關文章
- 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 drag 事件JavaScript事件
- JavaScript dragend 事件JavaScript事件
- JavaScript dragenter 事件JavaScript事件
- JavaScript dragover 事件JavaScriptGo事件
- JavaScript dragleave 事件JavaScript事件
- JavaScript drop 事件JavaScript事件
- JavaScript storage 事件JavaScript事件
- JavaScript mouseenter 事件JavaScript事件
- JavaScript animationIteration 事件JavaScript事件
- JavaScript animationStart 事件JavaScript事件
- JavaScript事件模型JavaScript事件模型
- JavaScript mouseout 事件JavaScript事件