Javascript 如何在dragover/dragenter HTML 5拖放过程中更改图标
如何在dragover或dragenter期间更改DnD(拖放)图标?有可能吗 如果拖放源位于html页面内,我可以在dragstart期间更改图标(例如,在另一个div中拖动一个div)。这是我的代码,我正在使用angular,我已经设置了一个 但是,如果源文件是一个文件,例如一个url,那么更改图标是不起作用的,下面是代码。我试图在dragover或dragenter期间更改图标Javascript 如何在dragover/dragenter HTML 5拖放过程中更改图标,javascript,html,angularjs,Javascript,Html,Angularjs,如何在dragover或dragenter期间更改DnD(拖放)图标?有可能吗 如果拖放源位于html页面内,我可以在dragstart期间更改图标(例如,在另一个div中拖动一个div)。这是我的代码,我正在使用angular,我已经设置了一个 但是,如果源文件是一个文件,例如一个url,那么更改图标是不起作用的,下面是代码。我试图在dragover或dragenter期间更改图标 element.bind('dragenter', function(event) { console.lo
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;
});
根据规范,您不能在拖动启动以外的事件上使用setDragImage。请看这里: setDragImage(element,x,y)方法必须运行以下步骤:
这些模式是出于安全原因而存在的,在拖放的不同阶段可以执行一些操作 @Petermore我想没有,这是每种设计。总有解决办法。:)我想在这种情况下,唯一的解决办法是从头开始实施D&D。这太糟糕了:/a另一种选择是
setDragImage(new Image(),9999,0)
,然后实现一个自定义覆盖,用鼠标跟踪。我这样做是为了你。它并不是完全从头开始实现D&D,因为它仍然具有使用dragstart/enter/over/等进行跨窗口/选项卡D&D的优点。而mousedown/mousemove样式的解决方案只能在当前窗口/选项卡中工作。感谢您提供的信息。很高兴知道这一点
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;
});