禁用从HTML页面拖动图像

Use*_*034 189 html javascript css jquery image

我需要在我的页面中放置一个图像.我想禁用拖动该图像.我正在尝试很多东西,但没有帮助.有人可以帮帮我吗?

我不想将该图像保留为背景图像,因为我正在调整图像大小.

ale*_*lex 259

你可以这样......

document.getElementById('my-image').ondragstart = function() { return false; };
Run Code Online (Sandbox Code Playgroud)

看它工作(或不工作,而不是)

看来你正在使用jQuery.

$('img').on('dragstart', function(event) { event.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)

  • @alex - 没有图像拖动的目的不是窃取图像.目的完全不同.我正在制作可分类和可丢弃的图像.所以解释它需要很长时间. (8认同)
  • @alex - ondragstart是否与浏览器无关? (2认同)
  • 我刚刚解决了你可以简化jQuery:`$('img').on('dragstart',false);` (2认同)
  • @alex处理程序:[`值false也允许作为简单返回false的函数的简写.](https://api.jquery.com/on/) (2认同)

mik*_*ang 154

CSS唯一的解决方案:使用 pointer-events: none

https://developer.mozilla.org/en-US/docs/CSS/pointer-events

  • 另外一个*CSS only*解决方案:将一个元素*放在`img`上. (8认同)
  • -1!这应该用于防止所有ponter事件(包括拖动,就像你想要上传图像一样).使用javascript解决方案isntead! (6认同)
  • 当图像作为链接时不使用它。 (4认同)
  • 但这导致了至少FF的怪异选择效果.更好还是假的; (3认同)
  • 看起来这在IE(任何版本)中都不起作用,请参阅:http://caniuse.com/pointer-events (3认同)

dmo*_*dmo 116

只需将draggable ="false"添加到您的图片代码:

<img draggable="false" src="image.png">
Run Code Online (Sandbox Code Playgroud)

IE8及以下不支持.

  • 在Firefox 33.0 ubuntu中不起作用. (4认同)
  • 在Firefox 43中也不起作用 (4认同)
  • 适用于Chrome (2认同)

Ben*_*Ben 41

window.ondragstart = function() { return false; } 
Run Code Online (Sandbox Code Playgroud)

  • +1不理解downvotes.它不是最终的解决方案,同时它可以防止拖动所有,而不仅仅是一个特殊的图像.但它显示了正确的方向(我认为这是第一个做到这一点的答案) (4认同)
  • 请记住,有时人们会将链接拖到他们的书签栏 - 此解决方案会删除此功能. (2认同)

ima*_*era 29

最简单的跨浏览器解决方案

<img draggable="false" ondragstart="return false;" src="..." />
Run Code Online (Sandbox Code Playgroud)

问题

img {
 -moz-user-select: none;
 -webkit-user-select: none;
 -ms-user-select: none;
 user-select: none;
 -webkit-user-drag: none;
 user-drag: none;
 -webkit-touch-callout: none;
}
Run Code Online (Sandbox Code Playgroud)

是它在Firefox中不起作用


Use*_*034 24

I tried myself and found this is working.

$("img").mousedown(function(){
    return false;
});
Run Code Online (Sandbox Code Playgroud)

I am sure this disables dragging of all the images. Not sure it effects something else.

  • 啊! 你应该提到你使用jQuery /可以使用jQuery.使用jQuery的+1. (3认同)
  • 如果图像包装在&lt;a&gt;标签内怎么办?然后,如果用户单击图像,则不会单击链接。 (2认同)

小智 24

img {
  -moz-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
  user-drag: none;
  -webkit-touch-callout: none;
}
Run Code Online (Sandbox Code Playgroud)

我在我的网站http://www.namdevmatrimony.in/上使用它. 它的工作就像一个魔术!:)

  • 它在firefox中是可拖动的 (5认同)

mhu*_*mhu 13

看到这个答案 ; 在Chrome和Safari中,您可以使用以下样式禁用默认拖动:

-webkit-user-drag: auto | element | none;
Run Code Online (Sandbox Code Playgroud)

您可以尝试用户选择 Firefox和IE(10+):

-moz-user-select: none | text | all | element
-ms-user-select: none | text | all | element
Run Code Online (Sandbox Code Playgroud)


Abh*_*mal 12

您可以为此使用内联代码

<img draggable="false" src="http://www.ourkanpur.com/images/logo.png">
Run Code Online (Sandbox Code Playgroud)

第二个选项是使用外部或页面上的 css

img {
  -moz-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
  user-drag: none;
  -webkit-touch-callout: none;
}
Run Code Online (Sandbox Code Playgroud)
<img src="http://www.ourkanpur.com/images/logo.png">
Run Code Online (Sandbox Code Playgroud)

两者都正常工作 我在此站点上使用外部 css (单击此处)


小智 11

您可以将以下内容添加到您不希望可拖动的每个图像中(在img标记内):

onmousedown="return false;"
Run Code Online (Sandbox Code Playgroud)

例如

img src="Koala.jpg" onmousedown="return false;"
Run Code Online (Sandbox Code Playgroud)


小智 10

此代码完全符合您的要求.它可以防止图像拖动,同时允许任何其他依赖于事件的操作.

$("img").mousedown(function(e){
    e.preventDefault()
});
Run Code Online (Sandbox Code Playgroud)


小智 9

直接使用此:ondragstart="return false;"在您的图片代码中.

<img src="http://image-example.png" ondragstart="return false;"/>
Run Code Online (Sandbox Code Playgroud)

如果您有多个图像,请将其包裹在<div>标记上:

<div ondragstart="return false;">
   <img src="image1.png"/>
   <img scr="image2.png"/>
</div>
Run Code Online (Sandbox Code Playgroud)

适用于所有主流浏览器.


guz*_*art 8

由于我的图像是使用ajax创建的,因此在windows.load上不可用.

$("#page").delegate('img', 'dragstart', function (event) { event.preventDefault(); });

这样我可以控制哪个部分阻止行为,它只使用一个事件绑定,它适用于将来ajax创建的图像,而不必做任何事情.

使用jQuery新on绑定:

$('#page').on('dragstart', 'img', function(event) { event.preventDefault(); }); (感谢@ialphan)


Mus*_*afa 5

<img draggable="false" src="images/testimg1.jpg" alt=""/>
Run Code Online (Sandbox Code Playgroud)