如何在 Dragover 或 Dragenter 过程中更改 DnD(拖放)图标?有可能吗?
如果拖放源位于 html 页面内部(例如将一个 div 拖到另一个 div 中),我可以在拖拽启动期间更改图标。这是我的代码,我正在使用角度,我已经设置了plunker http://plnkr.co/edit/nRxBiqzPq58dR1jto2ZR?p=preview.
app.directive('drag', function() {
return {
link: function(scope, element, attr) {
element.attr('draggable', true);
element.css('cursor', 'move');
element.bind('dragstart', function(event) {
console.log('dragstart');
console.log(event.dataTransfer);
event.dataTransfer.effectAllowed = 'move';
var img = document.createElement("img");
img.src = "https://image.flaticon.com/teams/slug/google.jpg";
event.dataTransfer.setDragImage(img, 0, 0);
});
}
};
});
但如果源是文件或网址,则更改图标不起作用,这是代码。我试图在拖拽或拖拽期间更改图标。
element.bind('dragenter', function(event) {
console.log('dragenter');
event.dataTransfer.effectAllowed = 'move';
var img = document.createElement("img");
img.src = "https://image.flaticon.com/teams/slug/google.jpg";
event.dataTransfer.setDragImage(img, 0, 0);
});
element.bind('dragover', function(event) {
if (event.preventDefault) {
event.preventDefault();
}
if (event.stopPropagation) {
event.stopPropagation();
}
console.log('dragover');
element.addClass('dragged');
var img = document.createElement("img");
img.src = "https://image.flaticon.com/teams/slug/google.jpg";
event.dataTransfer.setDragImage(img, 0, 0);
return false;
});