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