是否有一种方法可以防止用户看到他们试图拖动的图像的幽灵(不是关心图像的安全性,而是体验)。

我已经尝试了这个,它修复了文本和图像上的蓝色选择的问题,但不是幽灵图像:

img {
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -o-user-select: none;
  user-select: none;
}

(我也尝试用同样的规则嵌套div内的图像)。 谢谢


当前回答

非常简单的 不要用太多逻辑把事情搞复杂了 使用简单的属性draggable并使其为false

<img draggable="false" src="img/magician.jpg" alt="" />

其他回答

我想你可以改变你的

img {
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -o-user-select: none;
  user-select: none;
}

成一个

img {
  -webkit-user-drag: none;
  -khtml-user-drag: none;
  -moz-user-drag: none;
  -o-user-drag: none;
  user-drag: none;
}

be-all-end-all,用于不选择或拖动,所有浏览器前缀:

-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
-ms-user-select: none;
user-select: none;

-webkit-user-drag: none;
-khtml-user-drag: none;
-moz-user-drag: none;
-o-user-drag: none;
-ms-user-drag: none;
user-drag: none;

您还可以将draggable属性设置为false。你可以用内联HTML: draggable="false", Javascript: elm来实现。draggable = false,或者用jQuery: elm。attr(“拖拽”,假)。

您还可以处理onmousedown函数以返回false。你可以用内联HTML: onmousedown="return false",用Javascript: elm.onmousedown=()=>return false;或用jQuery: elm.mousedown(()=>return false)来做到这一点。

//禁用图像拖动

$(document).on("dragstart", function (e) {
  e.preventDefault();
});

这需要jQuery。这可以防止拖拽任何文本或img。将文档替换为您想要阻止拖动的任何元素。

如果你真的需要使用拖动事件,并且不能设置draggable=false,你可以分配一个备用鬼图像。所以只需要像这样分配一个空白的png:

    $('#img').bind({
        dragstart: function(e) {
            var dragIcon = document.createElement('img');
            dragIcon.src = 'blank.png';
            dragIcon.width = 100;
            e.dataTransfer.setDragImage(dragIcon, -10, -10);
        }
    });

你可以使用CSS属性禁用webkit浏览器中的图像。

img{-webkit-user-drag: none;}