DataTransfer对象的属性与方法,使用effectAllowed和dropEffect属性设置拖放效果,使用setDragImage方法设置拖放图标 :
1、DataTransfer对象的属性
dropEffect属性:返回已选择的拖放效果,如果该操作效果与起初设置的effectAllowed效果不符,则拖拽操作失败。可以设置修改,包含这几个值:“none”, “copy”, “link” 和 “move”。 effectAllowed 属性:返回允许执行的拖拽操作效果,可以设置修改,包含这些值:“none”, “copy”, “copyLink”, “copyMove”, “link”, “linkMove”, “move”, “all” 和 “uninitialized”。types属性:返回在dragstart事件出发时为元素存储数据的格式,如果是外部文件的拖拽,则返回”files” 。
2、DataTransfer对象的方法
void clearData(DOMString format)方法:删除指定格式的数据,如果未指定格式,则删除当前元素的所有携带数据 。注:clearData方法可以用来清除DataTransfer对象内数据void setData(DOMString format, DOMString data)方法:为元素添加指定数据 。注:setData方法在拖放开始时向dataTransfer对象中存入数据,用types属性来指定数据的MIME类型。DOMString getData(DOMString format)方法:返回指定数据,如果数据不存在,则返回空字符串 。注:getData方法在拖动结束时读取dataTransfer对象中的数据void setDragImage(Element image, long x, long y):制定拖拽元素时跟随鼠标移动的图片,x、y分别是相对于鼠标的坐标(部分浏览器中可以用canvas等其他元素来设置) 。
3、使用effectAllowed和dropEffect属性设置拖放效果
dropEffect属性与effectAllowed属性结合起来可以设定拖放时的视觉效果。effectAllowed属性表示当一个元素被拖动时所允许的视觉效果,一般在ondragstart事件中设定,允许设定的值为none、copy、 copyLink、 copyMove、link、linkMove、move,all,unintialize。dropEffect属性表示实际拖放时的视觉效果,一般在ondragover事件中指定,允许设定的值为none,copy,link,move。dropEffect属性所表示的实际视觉效果必须在effectAllowed属性所表示的允许的视觉效果范围内。规则如下所示。
(1)如果effectAllowed属性设定为none,则不允许拖放要拖放的元素
(2)如果dropEffect属性设定为none,则不允许被拖放到目标元素中。
(3)如果effectAllowed属性设定为all或不设定,则dropEffect属性允
许被设定为任何值,并且按指定的视觉效果进行显示。
(4)如果effectAllowed属性设定为具体效果(不为none,all),dropEffect属性也设定了具体视觉效果,则两个具体效果值必须完全相等,否则不允许将被拖放元素拖放到目标元素中。
4、使用setDragImage方法设置拖放图标
在拖动一个元素时,可以添加自己定制的拖动图标。实现的方法: 在dragstart事件上,可以使用setDragImage方法,该方法有三个参数。第一个参数image为设定为拖放图标的图标元素;第二个参数x为拖放图标离鼠标指针的x轴方向的位移量;第三个参数y为拖放图标离鼠标指针的y轴方向的位移量。