我正在使用html5' draggable'属性来拖动容器中的2个元素和svg行来连接这两个元素。 连接后,拖动第一个Div应重新绘制连接的svg行(我通过调用' handleDragOver'函数来执行dragover事件)。但是如果你更快地拖动第一个div,则不会触发drop事件,并且div会在绘制线条时保持它的原始位置。
function handleDragOver(e) {
if (e.preventDefault) {
e.preventDefault();
}
//Some code doing DOM computation and manipulation
}
return false;
//e.dataTransfer.dropEffect = 'move';
}
如何确保每次都触发掉落事件。
请注意:
答案 0 :(得分:0)
请查看更新的小提琴:http://jsfiddle.net/sejoker/d4vs9fgs/1/ 以下更改:
moveLine函数的微小更改,以正确连接可拖动元素(可选)
function handleDrop(e) {
console.log('enter Drop');
if (e.stopPropagation) {
e.stopPropagation(); // stops the browser from redirecting.
}
var offset = e.dataTransfer.getData('Text').split(',');
dragSrcEl.style.left = (e.clientX + parseInt(offset[0], 10)) + 'px';
dragSrcEl.style.top = (e.clientY + parseInt(offset[1], 10)) + 'px';
setTimeout(function(){
var elem = svgLine.aLine;
if (elem !== null) {
var x = e.clientX - svgLine.left,
y = e.clientY - svgLine.top;
moveLine(x, y, elem, offset[2]);
}
}, 50)