JS中dataTransfer對象在拖曳操作中的妙用


dataTransfer對象提供了對於預定義的剪貼板格式的訪問,以便在拖曳操作中使用。

通俗的講就是在拖曳操作的過程中,我們可以用過dataTransfer對象來傳輸數據,以便在拖曳操作結束的時候對數據進行其他的操作。

感謝分享:http://my.oschina.net/jiangli0502/blog/179197

對象屬性


  • dropEffect:設置或返回拖放目標上允許發生的拖放行為。如果此處設置的拖放行為不再effectAllowed屬性設置的多種拖放行為之內,拖放操作將會失敗。該屬性值只允許為“null”、“copy”、“link”和“move”四值之一。
  • effectAllowed:設置或返回被拖動元素允許發生的拖動行為。該屬性值可設為“none”、“copy”、“copyLink”、“copyMove”、“link”、“linkMove”、“move”、“all”和“uninitialized”。
  • items:該屬性返回DataTransferItems對象,該對象代表了拖動數據。
  • types:該屬性返回一個DOMStringList對象,該對象包括了存入dataTransfer中數據的所有類型。


對象方法


    • setData(format,data):將指定格式的數據賦值給dataTransfer對象,參數format定義數據的格式也就是數據的類型,data為待賦值的數據
    • getData(format):從dataTransfer對象中獲取指定格式的數據,format代表數據格式,data為數據。
    • clearData([format]):從dataTransfer對象中刪除指定格式的數據,參數可選,若不給出,則為刪除對象中所有的數據。
    • addElement(element):添加自定義圖標
    • setDragImage(element,x,y):設置拖放操作的自定義圖標。其中element設置自定義圖標,x設置圖標與鼠標在水平方向上的距離,y設置圖標與鼠標在垂直方向上的距離。<body>
      <div style="width:600px;border:1px solid black">
      <h2>拖動收藏</h2>
      <div draggable="true" ondragstart="dsHandler(event)">中國</div>
      <div draggable="true" ondragstart="dsHandler(event)">美國</div>
      <div draggable="true" ondragstart="dsHandler(event)">小日本</div>
      <div draggable="true" ondragstart="dsHandler(event)">印度</div>
      <div draggable="true" ondragstart="dsHandler(event)">垃圾越南</div>
      <div draggable="true" ondragstart="dsHandler(event)">垃圾泰國</div>
      </div>
      <div id="dest" style="width:400px;height:400px;border:1px solid black;float:left">
      <h2 ondragleave="return false">收藏夾</h2>
      </div>
      <img src="us.png" alt="垃圾桶" draggable="false" id="gb" style="float:left"/>

      <script type="text/javascript">
      var dest=document.getElementById("dest");
      var dsHandler=function(e){
      e.dataTransfer.setData("text/plain","<item>"+ e.target.innerHTML);
      };
      dest.ondrop=function(e){
      var text= e.dataTransfer.getData("text/plain");
      if(text.indexOf("<item>")==0){
      var newEle=document.createElement("div");
      newEle.id=new Date().getUTCMilliseconds();
      newEle.innerHTML=text.substring(6);
      newEle.draggable="true";
      newEle.ondragstart=function(e){
      e.dataTransfer.setData("text/plain","<remove>"+newEle.id);
      };
      dest.appendChild(newEle);
      }
      };
      document.getElementById("gb").ondrop=function(e){
      var id= e.dataTransfer.getData("text/plain");
      if(id.indexOf("<remove>")==0){
      var target=document.getElementById(id.substring(8));
      dest.removeChild(target);
      }
      };
      document.ondragover=function(e){
      return false; }; document.ondrop=function(e){ return false; }</script></body>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM