To solve this issue for drag and drop event, dragLeave fires before drop sometimes:
onDragOver = function(e) { e.stopPropagation() }
onDrop = function(e) {
/* for drop */
}Under drop, you can set this:
function drop(ev)
{
event.preventDefault();
var data=event.dataTransfer.getData("Text");
event.target.appendChild(document.getElementById(data));
}