Muszę umieścić obraz na mojej stronie. Chcę wyłączyć przeciąganie tego obrazu. Próbuję wielu rzeczy, ale bez pomocy. Czy ktoś może mi pomóc?
Nie chcę zachować tego obrazu jako obrazu tła, ponieważ zmieniam jego rozmiar.
Muszę umieścić obraz na mojej stronie. Chcę wyłączyć przeciąganie tego obrazu. Próbuję wielu rzeczy, ale bez pomocy. Czy ktoś może mi pomóc?
Nie chcę zachować tego obrazu jako obrazu tła, ponieważ zmieniam jego rozmiar.
Odpowiedzi:
Możesz to polubić ...
document.getElementById('my-image').ondragstart = function() { return false; };
Zobacz, jak działa (a raczej nie działa)
Wygląda na to, że używasz jQuery.
$('img').on('dragstart', function(event) { event.preventDefault(); });
$(document)
zamiast$(window)
$('img').on('dragstart', false);
Rozwiązanie tylko CSS: użyj pointer-events: none
img
.
po prostu dodaj draggable = "false" do tagu obrazu:
<img draggable="false" src="image.png">
IE8 i poniżej nie obsługuje jednak.
window.ondragstart = function() { return false; }
najprostszym rozwiązaniem dla wielu przeglądarek jest
<img draggable="false" ondragstart="return false;" src="..." />
problem z
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;
}
jest to, że nie działa w 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;
}
Użyłem go na mojej stronie internetowej http://www.namdevmatrimony.in/ To działa jak magia !!! :)
Spróbowałem i okazało się, że to działa.
$("img").mousedown(function(){
return false;
});
Jestem pewien, że wyłącza to przeciąganie wszystkich obrazów. Nie jestem pewien, czy wpływa to na coś innego.
<a>
znacznik? Jeśli użytkownik kliknie obraz, link nie zostanie kliknięty.
Zobacz tę odpowiedź ; w Chrome i Safari możesz użyć następującego stylu, aby wyłączyć domyślne przeciąganie:
-webkit-user-drag: auto | element | none;
Możesz spróbować wybrać użytkownika dla przeglądarki Firefox i IE (10+):
-moz-user-select: none | text | all | element
-ms-user-select: none | text | all | element
Bezpośrednio użyj tego: ondragstart="return false;"
w swoim tagu obrazu.
<img src="http://image-example.png" ondragstart="return false;"/>
Jeśli masz wiele zdjęć zawiniętych w <div>
tag:
<div ondragstart="return false;">
<img src="image1.png"/>
<img scr="image2.png"/>
</div>
Działa we wszystkich głównych przeglądarkach.
Ponieważ moje obrazy zostały utworzone przy użyciu ajax, a zatem nie są dostępne w windows.load.
$("#page").delegate('img', 'dragstart', function (event) { event.preventDefault(); });
W ten sposób mogę kontrolować, która sekcja blokuje zachowanie, używa tylko jednego powiązania zdarzenia i działa dla przyszłych obrazów utworzonych przez ajax bez konieczności robienia czegokolwiek.
Z nowym on
wiązaniem jQuery :
$('#page').on('dragstart', 'img', function(event) { event.preventDefault(); });
(dzięki @ialphan)
img
elementów, obecnych lub przyszłych. Najmniej intensywny, najbardziej wytrzymały.
Świetne rozwiązanie, miał jeden mały problem z konfliktami, jeśli ktoś inny ma konflikt z innej biblioteki js, po prostu nie włączaj takiego konfliktu.
var $j = jQuery.noConflict();$j('img').bind('dragstart', function(event) { event.preventDefault(); });
Mam nadzieję, że to komuś pomoże.
Cóż, nie wiem, czy odpowiedzi tutaj pomogły wszystkim, czy nie, ale oto prosta sztuczka CSS, która zdecydowanie pomoże ci wyłączyć przeciąganie i zaznaczanie tekstów na stronie HTML.
Na swojej <body>
tag Dodaj ondragstart="return false"
. Spowoduje to wyłączenie przeciągania obrazów. Ale jeśli chcesz również wyłączyć zaznaczanie tekstu, dodaj onselectstart="return false"
.
Kod będzie wyglądał następująco: <body ondragstart="return false" onselectstart="return false">
Możesz uznać moje rozwiązanie za najlepsze. Większość odpowiedzi nie jest zgodna ze starymi przeglądarkami, takimi jak IE8, ponieważ e.preventDefault () nie będzie obsługiwany, podobnie jak zdarzenie ondragstart . Aby to zrobić w przeglądarce, musisz zablokować zdarzenie mousemove dla tego obrazu. Zobacz przykład poniżej:
jQuery
$("#my_image").mousemove( function(e) { return false } ); // fix for IE
$("#my_image").attr("draggable", false); // disable dragging from attribute
bez 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 });
}
przetestowane i działające nawet dla IE8
Ustaw następujące właściwości CSS na obrazie:
user-drag: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
Cóż, jest to możliwe, a pozostałe opublikowane odpowiedzi są całkowicie poprawne, ale można zastosować podejście brutalnej siły i zapobiec domyślnemu zachowaniu mousedown
obrazów. Który polega na rozpoczęciu przeciągania obrazu.
Coś takiego:
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();
});
Działa w tym Plunker http://plnkr.co/edit/HbAbJkF0PVLIMjTmEZml
Możesz do tego użyć kodu wbudowanego
<img draggable="false" src="http://www.ourkanpur.com/images/logo.png">
Drugą opcją jest użycie zewnętrznego lub na stronie 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;
}
<img src="http://www.ourkanpur.com/images/logo.png">
Oba działają poprawnie Używam zewnętrznego css na tej stronie (kliknij tutaj)
Kradnąc z mojej własnej odpowiedzi , po prostu dodaj do obrazu całkowicie przezroczysty element o tym samym rozmiarze. Podczas zmiany rozmiaru obrazu pamiętaj o zmianie rozmiaru elementu.
Powinno to działać w przypadku większości przeglądarek, nawet starszych.