HTML5拖放拖动时更改图标/光标

Ale*_*yuv 41 javascript html5 drag-and-drop

我想知道如何在拖动(dragover/dragenter)图标/光标期间更改,例如,当我使用degen或允许部分时.当然,我可以用光标移动绝对定位的DOM的一部分,但我对本机HTML5解决方案感兴趣.

谢谢!

zup*_*upa 25

你是在dropEffect之后:

在dragstart中初始化它:

event.dataTransfer.effectAllowed = "copyMove";
Run Code Online (Sandbox Code Playgroud)

在dragenter中更新它:

event.dataTransfer.dropEffect = "copy";
Run Code Online (Sandbox Code Playgroud)

  • 我将上面的JSFiddle更新为http://jsfiddle.net/rvRhM/192/以遵循您的建议.它适用于Chrome,但Firefox不会更改光标(编写时的当前版本...).无论如何,谢谢你的提示. (2认同)

TJ.*_*TJ. 9

我在这里有一个独立的crossbrowser HTML5拖放示例:http://jsfiddle.net/rvRhM/1/

看看dragstart和dragend事件.dm是被拖动的元素.

EventUtil.addHandler(dm, 'dragstart', function(e) {
    e.dataTransfer.setData(format, 'Dragme');
    e.dataTransfer.effectAllowed = effect;
    var target = EventUtil.getCurrentTarget(e);
    target.style.backgroundColor = 'blue';
    target.style.cursor = 'move'; // You can do this or use a css class to change the cursor
    return true;
});
Run Code Online (Sandbox Code Playgroud)

拖动结束时确保重置光标:

EventUtil.addHandler(dm, 'dragend', function(e) {  
    var target = EventUtil.getCurrentTarget(e);
    target.style.backgroundColor = '';
    target.style.cursor = 'default'; // Reset cursor
    return true;
});
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回复!但是我需要在dragenter/dragover期间根据我是否可以访问拖动元素进行更改.顺便说一下,这个例子在Chrome 18(OS X)中不起作用. (2认同)