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.
@alex - O objetivo de não ter a imagem arrastada não é roubar a imagem. O objetivo é completamente diferente. Estou tornando essa imagem classificável e descartável. Portanto, leva muito tempo para explicar.
Usuário 1034
2
@alex - O ondragstart é independente do navegador?
Usuário 1034
1
@AdamMerrifield Tente em $(document)vez de$(window)
rybo111
2
Acabei de descobrir que você pode simplificar o jQuery para:$('img').on('dragstart', false);
Também uma solução apenas para CSS : coloque um elemento sobre o img.
alex
6
-1! Isso deve ser usado para impedir TODOS os eventos do ponter (incluindo arrastar sobre, como quando você deseja fazer upload de uma imagem). Use a solução javascript isntead!
precisa saber é o seguinte
129
basta adicionar draggable = "false" à sua tag de imagem:
Estou usando o Magento para que minha div goste: <div class = "product-img-box"> <? Php echo $ this-> getChildHtml ('media')?> </div> Como posso restringir o clique com o botão direito e sem arrastar minha imagem div. @dmo
+1 Não entenda os votos negativos. Não é a solução definitiva, embora evite arrastar tudo, não apenas uma imagem especial. Mas mostra a direção certa (e acho que foi a primeira resposta)
Dr.Molle 18/11/2010
@DrMolle Pode ter sido em resposta aos comentários (desde que excluídos) deixados por Steve na minha resposta .
alex
2
Lembre-se de que, às vezes, as pessoas arrastam um link para a barra de favoritos - essa solução remove essa capacidade.
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.
Ótima solução, teve um pequeno problema com conflitos. Se alguém tiver conflito com outra biblioteca js, simplesmente não habilite conflitos como esse.
var $j = jQuery.noConflict();$j('img').bind('dragstart',function(event){ event.preventDefault();});
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){returnfalse});// 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){returnfalse});}elseif(my_image.attachEvent){
my_image.attachEvent("onmousemove",function(e){returnfalse});}
Não parece trabalhar em Firefox (usando Mac Firefox 69)
Ben Wheeler
2
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.
Nenhum destes parecem funcionar no Firefox (usando Mac Firefox 69)
Ben Wheeler
1
A resposta é simples:
<body oncontextmenu="return false"/>- desativar o botão direito do mouse
<body ondragstart="return false"/>- desativar o arraste do mouse
<body ondrop="return false"/>- desativar o mouse
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.
Respostas:
Você pode gostar disso ...
Veja-o funcionando (ou não funcionando)
Parece que você está usando jQuery.
fonte
$(document)
vez de$(window)
$('img').on('dragstart', false);
The value false is also allowed as a shorthand for a function that simply does return false.
Solução somente CSS: use
pointer-events: none
https://developer.mozilla.org/en-US/docs/CSS/pointer-events
fonte
img
.basta adicionar draggable = "false" à sua tag de imagem:
IE8 e abaixo não suporta no entanto.
fonte
fonte
solução mais simples entre navegadores é
Problema com
é que não está funcionando no firefox
fonte
Eu usei no meu site em http://www.namdevmatrimony.in/ Funciona como uma mágica !!! :)
fonte
Eu tentei e descobri que isso está funcionando.
Estou certo de que isso desabilita o arrastamento de todas as imagens. Não tenho certeza se isso afeta outra coisa.
fonte
<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:
Você pode tentar selecionar o usuário para Firefox e IE (10+):
fonte
Você pode adicionar o seguinte a cada imagem que não deseja arrastar (dentro da
img
tag):por exemplo
fonte
Esse código faz exatamente o que você deseja. Impede que a imagem seja arrastada enquanto permite outras ações que dependem do evento.
fonte
Use diretamente isso:
ondragstart="return false;"
na sua tag de imagem.Se você tiver várias imagens, agrupadas em uma
<div>
tag:Funciona em todos os principais navegadores.
fonte
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)fonte
img
elementos ilimitados , presente ou futuro. Menos intensivo, mais robusto.fonte
Ótima solução, teve um pequeno problema com conflitos. Se alguém tiver conflito com outra biblioteca js, simplesmente não habilite conflitos como esse.
Espero que isso ajude alguém.
fonte
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, adicioneondragstart="return false"
. Isso desativará o arrasto de imagens. Mas se você também quiser desativar a seleção de texto, adicioneonselectstart="return false"
.O código ficará assim:
<body ondragstart="return false" onselectstart="return false">
fonte
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
sem jQuery
testado e trabalhado mesmo para o IE8
fonte
Defina as seguintes propriedades CSS para a imagem:
fonte
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:
fonte
Funciona neste Plunker http://plnkr.co/edit/HbAbJkF0PVLIMjTmEZml
fonte
jQuery:
Você pode substituir o seletor de corpo por qualquer outro recipiente que as crianças que você deseja impedir sejam arrastadas e soltas.
fonte
Você pode usar código embutido para isso
E a segunda opção é usar CSS externo ou na página
Ambos estão funcionando corretamente Estou usando CSS externo neste site (clique aqui)
fonte
A resposta é simples:
<body oncontextmenu="return false"/>
- desativar o botão direito do mouse<body ondragstart="return false"/>
- desativar o arraste do mouse<body ondrop="return false"/>
- desativar o mousefonte
Eu fiz as propriedades css mostradas aqui, além de monitorar o ondragstart com o seguinte javascript:
fonte
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.
fonte