Eu preciso colocar uma imagem na minha página. Quero desativar o arrasto dessa imagem. Estou tentando muitas coisas, mas não ajuda. Alguém pode me ajudar?
Não quero manter essa imagem como imagem de fundo porque estou redimensionando a imagem.
Eu preciso colocar uma imagem na minha página. Quero desativar o arrasto dessa imagem. Estou tentando muitas coisas, mas não ajuda. Alguém pode me ajudar?
Não quero manter essa imagem como imagem de fundo porque estou redimensionando a imagem.
Respostas:
Você pode gostar disso ...
document.getElementById('my-image').ondragstart = function() { return false; };
Veja-o funcionando (ou não funcionando)
Parece que você está usando jQuery.
$('img').on('dragstart', function(event) { event.preventDefault(); });
$(document)
vez de$(window)
$('img').on('dragstart', false);
Solução somente CSS: use pointer-events: none
img
.
basta adicionar draggable = "false" à sua tag de imagem:
<img draggable="false" src="image.png">
IE8 e abaixo não suporta no entanto.
window.ondragstart = function() { return false; }
solução mais simples entre navegadores é
<img draggable="false" ondragstart="return false;" src="..." />
Problema com
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;
}
é que não está funcionando no firefox
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;
}
Eu usei no meu site em http://www.namdevmatrimony.in/ Funciona como uma mágica !!! :)
Eu tentei e descobri que isso está funcionando.
$("img").mousedown(function(){
return false;
});
Estou certo de que isso desabilita o arrastamento de todas as imagens. Não tenho certeza se isso afeta outra coisa.
<a>
tag? Então, se o usuário clicar na imagem, o link não será clicado.
Veja esta resposta ; no Chrome e Safari, você pode usar o seguinte estilo para desativar o arraste padrão:
-webkit-user-drag: auto | element | none;
Você pode tentar selecionar o usuário para Firefox e IE (10+):
-moz-user-select: none | text | all | element
-ms-user-select: none | text | all | element
Use diretamente isso: ondragstart="return false;"
na sua tag de imagem.
<img src="http://image-example.png" ondragstart="return false;"/>
Se você tiver várias imagens, agrupadas em uma <div>
tag:
<div ondragstart="return false;">
<img src="image1.png"/>
<img scr="image2.png"/>
</div>
Funciona em todos os principais navegadores.
Desde que minhas imagens foram criadas usando ajax e, portanto, não estão disponíveis no windows.load.
$("#page").delegate('img', 'dragstart', function (event) { event.preventDefault(); });
Dessa forma, eu posso controlar qual seção bloqueia o comportamento, ele usa apenas uma ligação de evento e funciona para futuras imagens criadas pelo ajax sem precisar fazer nada.
Com a nova on
ligação do jQuery :
$('#page').on('dragstart', 'img', function(event) { event.preventDefault(); });
(obrigado @ialphan)
img
elementos ilimitados , presente ou futuro. Menos intensivo, mais robusto.
Bem, eu não sei se as respostas aqui ajudaram a todos ou não, mas aqui está um truque simples de CSS embutido que definitivamente ajudaria você a desativar o arrasto e a seleção de textos em uma página HTML.
Na sua <body>
tag, adicione ondragstart="return false"
. Isso desativará o arrasto de imagens. Mas se você também quiser desativar a seleção de texto, adicione onselectstart="return false"
.
O código ficará assim: <body ondragstart="return false" onselectstart="return false">
Você pode considerar minha solução a melhor. A maioria das respostas não é compatível com navegadores antigos como o IE8, pois o e.preventDefault () não será suportado, assim como o evento ondragstart . Para fazê-lo compatível com vários navegadores, é necessário bloquear o mouse evento para esta imagem. Veja o exemplo abaixo:
jQuery
$("#my_image").mousemove( function(e) { return false } ); // fix for IE
$("#my_image").attr("draggable", false); // disable dragging from attribute
sem jQuery
var my_image = document.getElementById("my_image");
my_image.setAttribute("draggable", false);
if (my_image.addEventListener) {
my_image.addEventListener("mousemove", function(e) { return false });
} else if (my_image.attachEvent) {
my_image.attachEvent("onmousemove", function(e) { return false });
}
testado e trabalhado mesmo para o IE8
Defina as seguintes propriedades CSS para a imagem:
user-drag: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
Bem, isso é possível, e as outras respostas postadas são perfeitamente válidas, mas você pode adotar uma abordagem de força bruta e impedir o comportamento padrão de mousedown
imagens. Qual é começar a arrastar a imagem.
Algo assim:
window.onload = function () {
var images = document.getElementsByTagName('img');
for (var i = 0; img = images[i++];) {
img.ondragstart = function() { return false; };
}
};
document.getElementById('#yourImageId').addEventListener('dragstart', function(e) {
e.preventDefault();
});
Funciona neste Plunker http://plnkr.co/edit/HbAbJkF0PVLIMjTmEZml
Você pode usar código embutido para isso
<img draggable="false" src="http://www.ourkanpur.com/images/logo.png">
E a segunda opção é usar CSS externo ou na página
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;
}
<img src="http://www.ourkanpur.com/images/logo.png">
Ambos estão funcionando corretamente Estou usando CSS externo neste site (clique aqui)
Roubando da minha própria resposta , basta adicionar um elemento completamente transparente do mesmo tamanho sobre a imagem. Ao redimensionar sua imagem, certifique-se de redimensionar o elemento.
Isso deve funcionar para a maioria dos navegadores, mesmo os mais antigos.