DataTransferItemList.add()

admin發表於2019-10-13

此方法可以向DataTransferItemList集合新增一個新項。

如果新增成功,則返回此新新增項(DataTransferItem型別)。

關於DataTransferItemList內容參閱DataTransferItemList 集合一章節。

特別說明:此方法需要在dragstart事件處理函式中呼叫,否則無效。

語法結構一:

[JavaScript] 純文字檢視 複製程式碼
DataTransferItem = DataTransferItemList.add(data, type)

引數解析:

(1).data:規定將要新增資料的字串內容。

(2).type:規定將要新增資料的MIME型別。

語法結構二:

[JavaScript] 純文字檢視 複製程式碼
DataTransferItem = DataTransferItemList.add(file)

引數解析:

(1).file:規定將要新增的file型別物件。

程式碼例項如下:

[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=function(){
  let odiv=document.getElementById("box");
  let op=document.getElementById("p");
 
  op.ondragstart = (ev) => {
    ev.dataTransfer.setData("Text",ev.target.id);
    let itemList = ev.dataTransfer.items;
    console.log(itemList.length);
    itemList.add("http://www.softwhy.com","text/uri-list");
    console.log(itemList.length);
  }
 
  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>

拖拽頂部紅色矩形,然後檢視谷歌控制檯列印效果:

a:3:{s:3:\"pic\";s:43:\"portal/201910/13/024358ln00a7pb617wwh10.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

第二個列印數字為2,說明新增成功。

新增成功後,此方法返回新增的DataTransferItem型別物件。

特別說明:如果新增資料的MIME型別已經存在,則報錯。

新增file型別資料操作操作相同,只不過無需使用第二個引數。

關於file型別物件可以參閱JavaScript File 物件一章節。