Javascript HTML5拖放-如何删除IE上的默认重影图像

Javascript HTML5拖放-如何删除IE上的默认重影图像,javascript,html,Javascript,Html,我已经在我的应用程序中实现了HTML5的拖放API,当用户拖动项目时,我需要禁用默认的重影图像 这些项不是图像,而是表中的行,如: <table> <tr draggable droppable ><td></td></tr> <tr draggable droppable ><td></td></tr> <tr draggable droppable ><t

我已经在我的应用程序中实现了HTML5的拖放API,当用户拖动项目时,我需要禁用默认的重影图像

这些项不是图像,而是表中的行,如:

<table>
  <tr draggable droppable ><td></td></tr>
  <tr draggable droppable ><td></td></tr>
  <tr draggable droppable ><td></td></tr>
</table>
其中,diableImg是一个宽度为0、高度为0、不透明度为0等的dom元素

这里的问题是,这不适用于IE,因为它不支持SetDragage

有没有其他方法可以在拖动时禁用我行的此重影图像

我只需要让它从IE 11->Edge开始工作


谢谢。

在IE中设置自定义重影图像的示例

var ghostImg=document.getElementById(“ghostImg”);
document.getElementById('dragme')。addEventListener('dragstart',函数(e){
var target=e.src元素| | e.target;
var cloneNode=target.cloneNode(true);
target.parentNode.insertBefore(克隆节点,目标);
target.style.display=“无”;
setTimeout(函数(){
target.parentNode.removeChild(克隆节点);
target.style.display=“block”;
}, 0);
ghostImg.style.zIndex='99';
ghostImg.style.visibility='visible'
ghostImg.style.top=e.clientY+'px';
ghostImg.style.left=e.clientX+'px';
})
document.getElementById('dragme')。addEventListener('drag',函数(e){
ghostImg.style.zIndex='99';
ghostImg.style.top=e.clientY+'px';
ghostImg.style.left=e.clientX+'px';
});
document.getElementById('dragme')。addEventListener('dragend',function(e){
ghostImg.removeAttribute(“风格”);
});
#dragme{
宽度:100px;
高度:100px;
背景:#78ebff;
边框:1px实心#56bdff;
文本对齐:居中;
线高:100px;
边界半径:10px;
}
#鬼影{
位置:固定;
左:0;
排名:0;
z指数:-1;
可见性:隐藏;
}

拖我

我也遇到了这个问题。我只是在拖动之前将显示设置为“无”

    if (event.dataTransfer.setDragImage)
    {
        let dragImage = document.createElement("div");
        dragImage.style.visibility = "hidden";
        event.dataTransfer.setDragImage(dragImage, 0, 0);
    }
    else
    {
        //Well if we cannot remove the ghost image then we need to make the initial image invisible when a ghost image would be captured
        //then make the item visible again.
        var initialDisplay = event.srcElement.style.display;
        event.srcElement.style.display = "none";
        window.setTimeout(() =>
        {
            event.srcElement.style.display = initialDisplay;
        });
    }
似乎在1帧后(注意settimeout没有指定延迟时间),显示恢复正常,但当捕捉到重影图像时,它是不可见的

    if (event.dataTransfer.setDragImage)
    {
        let dragImage = document.createElement("div");
        dragImage.style.visibility = "hidden";
        event.dataTransfer.setDragImage(dragImage, 0, 0);
    }
    else
    {
        //Well if we cannot remove the ghost image then we need to make the initial image invisible when a ghost image would be captured
        //then make the item visible again.
        var initialDisplay = event.srcElement.style.display;
        event.srcElement.style.display = "none";
        window.setTimeout(() =>
        {
            event.srcElement.style.display = initialDisplay;
        });
    }