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

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

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

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


当前回答

这里有一个比添加空事件侦听器更简单的解决方案。 只需设置指针事件:none到你的图像。如果你仍然需要它是可点击的,在它周围添加一个容器来触发事件。

其他回答

对于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();
    }

享受。

处理dragstart事件并返回false。

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

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

//禁用图像拖动

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

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

HTML

<img draggable="false" src="img/example.jpg">

JavaScript

document.querySelector('img').addEventListener('dragstart', (event) => {
  event.preventDefault();
});

CSS

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

目前在浏览器或标准轨道中没有无前缀的user-drag或其他版本的属性实现,因为HTML可拖动属性/属性是首选的解决方案。

它是webkit特有的属性。以下是WebKit文档对它的描述:

Heading WebKit provides automatic support to let users drag common items, such as images, links, and selected text. You can extend this support to include specific elements on an HTML page. For example, you could mark a particular div or span tag as draggable. To mark an arbitrary element as draggable, add the -webkit-user-drag attribute to the style definition of the element. Because -webkit-user-drag is a cascading style sheet (CSS) attribute, you can include it as part of a style definition, or as an inline style attribute on the element tag. The values for this attribute are listed in Table 4-1. Values for -webkit-user-drag attribute: none: Do not allow this element to be dragged. element: Allow this element to be dragged. auto: Use the default logic for determining whether the element should be dragged. (Images, links, and text selections are the only elements that can be dragged.) This is the default value.

所有使用WebKit渲染引擎的浏览器都支持它,比如Chrome、更新版本的Opera、Safari等等。使用WebKit的移动浏览器的支持可能因移动操作系统而异。