Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 拖放;拖放:光标在Chrome中_Javascript_Jquery_Jquery Ui_Google Chrome - Fatal编程技术网

Javascript 拖放;拖放:光标在Chrome中

Javascript 拖放;拖放:光标在Chrome中,javascript,jquery,jquery-ui,google-chrome,Javascript,Jquery,Jquery Ui,Google Chrome,我的问题是,在Chrome中,光标不随可拖动项移动。它在IE中运行良好。 我有jquery和jQueryUI1.11.1,这就是我正在使用的脚本 function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.target.innerHTML += ' '; // Add space so that there is no kerning... ev.dataTransfer.setData

我的问题是,在Chrome中,光标不随可拖动项移动。它在IE中运行良好。 我有jquery和jQueryUI1.11.1,这就是我正在使用的脚本

function allowDrop(ev) {
    ev.preventDefault();
}


function drag(ev) {
    ev.target.innerHTML += ' '; // Add space so that there is no kerning...
    ev.dataTransfer.setData("Text", ev.target.id);
}

function drop(ev) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("Text");
    ev.target.parentNode.replaceChild(document.getElementById(data), ev.target);
    document.getElementById(data).className = " ";
}

function drop(ev)
    {
      ev.preventDefault();
      var data=ev.dataTransfer.getData("Text");

      if(ev.target.getAttribute('data-drop') == data)
        ev.target.appendChild(document.getElementById(data));

    }

也许有什么东西不见了。非常感谢您的帮助

问题是拖动图像(“阴影”)被移动到
#word
的角落,对吗

看起来Chrome计算的位置是错误的,可能是因为
标签,我猜

您可以使用
setDragImage
方法修复此问题,将DragImage设置为事件的
target
,并根据单击位置设置偏移,这将强制Chrome正确渲染:

function drag(ev) {
    ev.target.innerHTML += ' '; // Add space so that there is no kerning...
    ev.dataTransfer.setData("Text", ev.target.id);

    ev.dataTransfer.setDragImage(ev.target, ev.layerX - ev.target.offsetLeft, ev.layerY - ev.target.offsetTop);
}
它在这里工作


(在我的小提琴中,我将类型更改为“text/plain”,只是为了测试这是否是问题的原因,但事实并非如此)

根据我的经验,光标在chrome中移动正确,请创建一个JSFIDLE或代码笔。感谢Luizgrs的快速回复。我不熟悉创建JSFIDLE,但这就是我所做的。希望能有帮助。谢谢你,路易斯格斯。我不熟悉创建JSFIDLE,但这就是我所做的。希望能有帮助。再次感谢。谢谢你,路易斯格斯。完成并工作。非常感谢你。非常感谢您的快速帮助。魔术