HTML5技术

我拖拖拖--H5拖放API基础篇 - 大~熊(2)

字号+ 作者:H5之家 来源:H5之家 2017-05-04 15:03 我要评论( )

testEvents .source { width height border .process { width height border margin-top .dest { width height border margin-top copymovelinknone window.onload = function (){ ); ); ); ); var dpev;dpe.onchan

testEvents .source{ width height border .process{ width height border margin-top .dest{ width height border margin-topcopymovelinknone window.onload=function(){ ); ); ); ); var dpev; dpe.onchange = function(){ dpev = this.value; } var sourceEle; source.addEventListener((e){ console.log(); console.log(e); sourceEle = e.target; e.dataTransfer; dt.effectedAllowed ; },false); dest.addEventListener((e){ console.log(); console.log(e); e.preventDefault(); },false); dest.addEventListener((e){ console.log(); console.log(e); dest.appendChild(sourceEle); e.preventDefault(); e.stopPropagation(); },false); document.ondragover = function(e){ e.dataTransfer.dropEffect = dpev; e.preventDefault(); } document.ondrop = function(e){e.preventDefault();} }

  我在ubuntu chrome测试法现,都是一个手,但是置为none时拖不进去了,可能不同系统会有一些差别。

  关于setData()和getData()方法

   这两个是有关数据交换的方法,前者传两个参数,第一参数是一个mime类型字符串,第二个是数据;后者传一个参数,为mime类型。可用mime类型为text/plain,text/html,text/xml,text/uri-list.

  测试用例,将菜单的菜拖到记录本上。

  

点菜 .menu{ width height border margin-right float .record{ width height border margin-right float糖醋排骨青椒肉丝武昌鱼手撕包材千叶豆腐 window.onload = function(){ ); ); menu.addEventListener((e){ e.dataTransfer; e.target; ){ dt.setData(,tar.innerHTML); } dt.effectedAllowed ; },false); record.addEventListener((e){ ); li.appendChild(document.createTextNode(e.dataTransfer.getData())); record.appendChild(li); e.stopPropagation(); },false); record.addEventListener((e){ e.preventDefault(); },false); document.addEventListener(); document.addEventListener(); }

  关于setDragImage(Element img,long x,long y)

   这个方法是设置拖放时的图标的,第一个参数表是图标元素,第二个表示相对与光标的水平偏移,第三个是垂直的。

  还是前面的例子,在dragstart事件添加下面的代码,拖动时你会发现一只很大的手(不要被吓到);

var img = document.createElement("img"); img.src = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1493802056263&di=232de2c30491e19f32833669ad5a67ae&imgtype=0&src=http%3A%2F%2Fstatic.freepik.com%2Ffree-photo%2Fone-finger_318-10333.jpg"; dt.setDragImage(img,10,10);

 

 四、关于拖放数据传递

  上面的例子已经谈到了拖放的数据传递方法,这里在总结一下。

  1、通过dataTransfer的setData()和getData()方法传递

  2、通过闭包的方法,请参考开篇的例子。

五、总结

  HTML5的拖放api非常简洁实用,为我们省去了很多麻烦,如果没有它,我们可能需要通过mousedownmousemove等等事件才能实现上述功能。本文较为详细的介绍了相关api,希望对你有所帮助。关于拖放api的应用大家可以参看下面链接的文章,他做了一个拖放排序,这是一个比较常见的应用场景。

  大~熊同学的粉丝数正在逼近三位数,感谢各位园友的支持,大~熊会继续努力的! 

  参考:

  •  
  •  

     

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    网友点评
    t