【发布时间】:2018-06-21 02:47:50
【问题描述】:
如何在 dragover 或 dragenter 期间更改 DnD 的(拖放)图标?有可能吗?
如果拖放源位于 html 页面内(例如将 div 拖到另一个 div 中),我可以在 dragstart 期间更改图标。这是我的代码,我正在使用 Angular,我设置了 plunker。
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);
});
}
};
});
但是如果源是文件或url,则更改图标不起作用,这里是代码。我正在尝试在 dragover 或 dragenter 期间更改图标。
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;
});
【问题讨论】:
标签: javascript html angularjs