DataTransfer.types 屬性
此屬性返回拖拽操作中通過DataTransfer物件傳遞的資料的資料型別或者MIME type。
此資料通常在dragstart事件處理函式中,通過setData()方法設定。
返回一個陣列,陣列中每一個元素代表著拖拽資料中的一個資料型別或者MIME type。
陣列儲存型別的順序與拖動操作中包含的資料順序相同。
特別說明:千萬不要誤認為是返回被拖動資料的資料型別或者MIME type。
語法結構:
[JavaScript] 純文字檢視 複製程式碼dataTransfer.types
如果拖動操作不涉及資料,那麼返回一個空陣列。
下面通過程式碼例項對此屬性進行一下詳細演示。
[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 = (ev) => { 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) => { console.log(ev.dataTransfer.types); 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>
上述程式碼可以將頂部矩形拖動底部灰色矩形中。
控制檯執行效果截圖如下:
下面對程式碼執行結果進行一下分析:
(1).拖動的是p元素,千萬不要誤以為是獲取p元素的MIME type。
(2).DataTransfer.types屬性獲取的是通過setData()方法設定的資料MIME type。
(3).由於傳遞的是純文字,所以列印結果是["text/plain"]。
[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"> #box { width:300px; height:100px; background-color:#ccc; } .over { border: 1px dashed #000; transform: scale(0.8, 0.8); } </style> <script> window.onload = () =>{ let odiv=document.getElementById("box"); odiv.ondragenter = (ev) => { ev.target.classList.add('over'); } odiv.ondragover = (ev) => { ev.preventDefault(); } odiv.ondragleave = (ev) => { ev.target.classList.remove('over'); } odiv.ondrop = (ev) => { console.log(ev.dataTransfer.types); ev.preventDefault(); ev.stopPropagation(); ev.target.classList.remove('over'); let text = ev.dataTransfer.getData('text'); ev.target.innerHTML=text; } } </script> </head> <body> <p id="p">螞蟻部落位於青島市南區</p> <div id="box"></div> </body> </html>
上面程式碼可以實現文字的拖動效果,控制檯列印截圖如下:
執行結果分析如下:
(1).拖動文字無需通過dragstart事件處理函式設定資料,從作業系統拖動檔案也是如此。
(2).可以看到有兩種型別,這是因為從網頁拖動文字,不但純文字被拖動了,裡面還夾雜了一些HTML程式碼。
[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"> #demo { margin: 20px; } #demo .preview { height: 300px; width:300px; background: #ddd; } #demo li { list-style:none; } #demo img { max-height: 150px; width: auto; } </style> <script> window.onload = () => { let preview = document.querySelector('.preview'); preview.addEventListener('dragover', function (e) { e.preventDefault(); }, false); preview.addEventListener('drop', function (e) { e.preventDefault(); e.stopPropagation(); console.log(e.dataTransfer.types); [].forEach.call(e.dataTransfer.files, function (file) { if (file && file.type.match('image.*')) { let reader = new FileReader(); reader.onload = function (e) { var img = document.createElement('img'); img.src = e.target.result; var li = document.createElement('li'); li.appendChild(img); preview.appendChild(li); }; reader.readAsDataURL(file); } }); }, false); } </script> </head> <body> <div id="demo"> <h3>拖拽圖片進入下面區域預覽</h3> <ul class="preview"></ul> </div> </body> </html>
從作業系統向瀏覽器拖動一個圖片進來,控制檯列印結果如下:
控制檯列印效果截圖如下:
如果是從作業系統同拖拽的檔案,那麼獲取的陣列元素是"Files"。
前面已經說過,無需在dragstart事件處理函式設定資料,系統自動完成。
相關文章
- CMake 屬性之全域性屬性
- defer 屬性和 async 屬性
- CSS 屬性篇(七):Display屬性CSS
- CMake 屬性之目錄屬性
- CMake 屬性之目標屬性
- Python - 物件導向程式設計 - 公共屬性、保護屬性、私有屬性Python物件程式設計
- CSS字型屬性和文字屬性詳解CSS
- Python 類的屬性與例項屬性Python
- python物件屬性管理(2):property管理屬性Python物件
- 根據屬性字串獲取屬性值字串
- CAD屬性編輯操作——物件屬性教程物件
- cssRules 屬性CSS
- previousElementSibling 屬性
- translucent屬性
- parentRule 屬性
- parentStyleSheet屬性
- cssText 屬性CSS
- Property屬性
- 私有屬性
- background屬性
- allowfullscreen 屬性
- ref屬性
- HTML 屬性HTML
- onreadystatechange 屬性
- DOM屬性
- jQuery 屬性jQuery
- background 屬性
- jQuery設定disabled屬性與移除disabled屬性jQuery
- WPF 之 依賴屬性與附加屬性(五)
- 框架(frameset),全域性屬性框架
- JavaScript cells 屬性JavaScript
- XMLHttpRequest responseText屬性XMLHTTP
- canvas shadowBlur 屬性Canvas
- canvas shadowColor 屬性Canvas
- JavaScript rows 屬性JavaScript
- JavaScript nodeName 屬性JavaScript
- HTML id 屬性HTML
- HTML dir 屬性HTML