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

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

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

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


当前回答

试一试:

img {
  pointer-events: none;
}

尽量避免

* {
  pointer-events: none;
}

其他回答

如果你真的需要使用拖动事件,并且不能设置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);
        }
    });

您可以在标记或JavaScript代码中将可拖动属性设置为false。

//作为jQuery方法:$('#myImage')。attr(“拖拽”,假); . getelementbyid(“模板”)。setAttribute(“拖拽”,假); <img id="myImage" src="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png">

或者直接使用HTML:

<img id="myImage" src="https://link-to-your.image.com/image.png" draggable="false">

注意draggable="false"也可以用在img以外的其他HTML元素上。

//禁用图像拖动

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

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

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

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

对于Firefox,你需要深入一点:

var imgs = document.getElementsByTagName('img');

    // loop through fetched images
    for (i = 0; i < imgs.length; i++) {
        // and define onmousedown event handler
        imgs[i].onmousedown = disableDragging;
    }

function disableDragging(e) {
        e.preventDefault();
    }

享受。