canvas教程

canvas转存为图片实例教程(2)

字号+ 作者:H5之家 来源:H5之家 2017-05-30 18:06 我要评论( )

3.在dragstart的事件监听上通过event.DataTransfer.setData(type,value)设置拖拽数据。 p draggable=true ondragstart=event.dataTransfer.setData(text/plain, This text may be dragged)This text strongmay/stro

3.在dragstart的事件监听上通过event.DataTransfer.setData(type,value)设置拖拽数据。

<p draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'This text may be dragged')"> This text <strong>may</strong> be dragged. </p>

如果draggable属性被禁止或者设置为false,那么这个元素不能被拖拽。draggable属性可以在任何属性上设置。当一个元素设置为可拖,在这个元素上点击或拖动鼠标,这个元素里的文本或其他元素不会被选中。当用户开始拖动,dragstart事件会被触发,在dragstart事件中,你能够通过setData()指定拖拽数据,通过setDragImage()指定图片反馈,以及通过设置effectAllowed属性和dropEffect属性指定拖拽效果。拖拽数据是必须指定的,但是图片反馈是拖拽效果不是必须的

拖拽数据

拖拽数据包含两部分信息,分别是数据的类型和数据的值,数据的类型是字符串,数据的值也是字符串形式。 拖拽数据的类型有:text/plain,text/html,image/jpeg,text/uri-list等,还能够自定义类型。

可以多次调用setData()方法设置多个拖拽数据。如下:

var dt = event.dataTransfer; dt.setData("application/x-bookmark",bookmarkString); dt.setData('text/uri-list',''); dt.setData('text/plain','drag data');

application/x-bookmark是自定义类型。

如果通过这个方法设置新的类型的数据,那么这个新的拖拽数据会位于拖拽数据列表的尾部,如果设置以及存在的类型的数据,那么新的数据会覆盖旧的数据。

通过getData()能够得到指定类型的拖拽数据

通过clearData()能够清除指定类型的拖拽数据

图片反馈

图片反馈并不是必须设置的,默认它是从拖拽目标上生成的一个半透明图片,并且这个图片在拖拽期间会跟着鼠标移动。你能够通过setDragImage(image,xOffect,yOffect)方法自定义图片反馈。

setDragImage()接受三个参数,第一个参数表示图片引用,第二个和第三个表示图片左上角相对于鼠标指针的位置。单位是像素

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>test target</title> <style type="text/css"> #drag{ width:200px; height:200px; background-color: aqua; } .drop{ width: 300px; height: 300px; background-color: antiquewhite; } </style> </head> <body> <p id="drag" draggable="true" ondragstart="event.dataTransfer.setData('text/plain','dddd')"> 我可以拖动 </p> <img src="test.jpg" id="img"> <p class="drop"></p> <script type="text/javascript"> document.addEventListener('dragstart',function(event){ event.target.style.backgroundColor = 'red'; event.dataTransfer.setDragImage(document.getElementById('img'),30,30); },false); </script> </body> </html>拖拽效果

通过设置effectAllowed和dropEffect可以指定拖拽效果

事件对象的dataTransfer属性

dataTransfer属性是一个DataTransfer对象,在这个属性中保存了拖拽操作过程中的数据,它可能保存一个或者多个数据项。这个属性是只读的。

dataTransfer属性中的标准属性

1.dropEffect

得到当前drag and drop操作的类型,或者设置给当前drag and drop 设置新的类型。这个属性可能取值是none,copy,move,link。这属性会影响拖拽过程中的鼠标的显示形式。

2.effectAllowed

这个属性用于指定运行的拖拽操作效果,可选的值有none,all,copy,move,link,copyLink,copyMove,linkMove。默认情况这个值是all,如果要设置这个属性的值就要在dragstart的事件处理程序里进行设置。

3.files

包含了在data transfer中的所有可用的本地文件列表,如果被拖拽操作没有涉及文件,那么它是一个空列表。

4.items

是一个包含了所有拖拽数据的列表。它是一个DataTransferItemList对象。

5.types

它是一个字符串数组,这个数组中包含在dragstart事件处理程序中设置的拖拽事件的类型,如果拖拽操作不存在数据,那么他得到一个空数组。

DataTransfer属性的标准方法

1.clearData(type):移除给定类型相关的拖拽数据。接受一个可选的参数,如果这个参数是空或者没有指定,那么移除所以类型的数据,如果指定的类型不存在或者data transfer中不包含数据,那么这个方法不会产生什么影响。

2.getData(type):得到指定类型的拖拽数据。如果指定类型的数据不存在或者data transfer中不包含数据, 得到一个空的字符串。

3.setData(type,value):设置给定类型的拖拽数据。接受两个参数,第一个参数是类型,第二个参数是指定类型的值。 如果这个类型的值不存在,那么在类型列表的最后添加一个新的格式,如果已经存在的,那么在相同的位置 存在的数据被替换.

4.setDragImage(image,xoffset,yoffset):接受三个参数,第一个参数是图片的引用,第二个和第三个参数是移动的图片的 左上角相对鼠标的位置。

DataTransferList对象

通过dataTransfer.items得到的值就是DataTransferList对象。

DataTransferList对象的属性

1.length:得到拖拽数据的数量

DataTransferList对象的方法

1.add():向拖拽数据列表中添加一个新的拖拽数据,添加成功后返回这个新的拖拽数据。当添加一个文件到拖拽数据列表中,这个方法只接受一个文件对象作为参数。当添加一个给定 类型的字符串到拖拽数据列表中,这个方法接受两个参数,第一个参数是数据,第二个参数是类型。

2.remove(index):从拖拽数据列表中移除指定位置的拖拽数据。这个方法接受一个表示位置的参数,如果这个参数小于0或者大于拖拽数据列表的长度,拖拽数据列表不会发生改变。

3.clear():移除拖拽数据列表中所有的拖拽数据。不需要参数。

4.DataTransferItem(index):得到指定位置上的拖拽数据。接受一个表示位置的参数, 这个方法简写形式是数组索引。

DataTransferItem对象

dataTransfer.items中的每一项都是DataTransferItem对象。

DataTransferItem对象的属性

1.kind:得到拖拽数据的键,可能的值有file和string

2.type:得到拖拽数据的类型,是MINE type

DataTransferItem对象的方法

1.getAsFile():返回拖拽数据的文件对象。如果拖拽数据不是文件则返回null

2.getAsString(function):调用回调函数,这个回调函数将拖拽数据项的字符串形式作为它的参数

拖拽文件

要使文件能够被拖放的一个重要步骤是定义一个放置区域。并且为放置区域添加drop,dragover和dragend事件处理程序。

当为一个元素添加drop事件的处理程序,及在dragover事件处理程序中取消浏览器的默认行为,那么这个元素就是放置区域。

 

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

相关文章
网友点评