拖动手势的启动器可以通过在
dragstart
事件的处理函数中设置
dataTransfer.effectAllowed
属性,来限制允许的拖动效果。可以使用以下字符串值:
字符串值
|
说明
|
"none"
|
不允许任何拖动操作。
|
"copy"
|
将数据复制到目标位置,并保留原始数据的位置不变。
|
"link"
|
使用指回原始数据的链接与放置目标共享数据。
|
"move"
|
将数据复制到目标,并将其从原始位置删除。
|
"copyLink"
|
可以复制数据,也可链接数据。
|
"copyMove"
|
可以复制数据,也可移动数据。
|
"linkMove"
|
可以链接数据,也可移动数据。
|
"all"
|
可以复制数据、移动数据,也可链接数据。当您阻止默认行为时,
All
是默认效果。
|
拖动手势的目标可以设置
dataTransfer.dropEffect
属性,以指示在用户完成放置后采取的动作。如果放置效果是允许的动作之一,则系统将显示相应的复制、移动或链接光标。如果不是,则系统将显示
不可用
光标。如果目标未设置放置效果,则用户可以使用功能键从允许的动作中进行选择。
同时在
dragover
和
dragenter
事件的处理函数中设置
dropEffect
值:
function doDragStart(event) {
event.dataTransfer.setData("text/plain","Text to drag");
event.dataTransfer.effectAllowed = "copyMove";
}
function doDragOver(event) {
event.dataTransfer.dropEffect = "copy";
}
function doDragEnter(event) {
event.dataTransfer.dropEffect = "copy";
}
注:
尽管您始终都应在
dragenter
的处理函数中设置
dropEffect
属性,但要注意,下一个
dragover
事件会将此属性重置为其默认值。设置
dropEffect
以响应这两个事件。