Czy istnieje sposób, aby uniemożliwić użytkownikowi zobaczenie ducha obrazu, który próbują przeciągnąć (nie dotyczy to bezpieczeństwa obrazów, ale wrażenia).
Wypróbowałem to, co rozwiązuje problem z niebieskim zaznaczeniem tekstu i obrazów, ale nie z obrazem-duchem:
img {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
(Próbowałem też zagnieżdżać obraz w elemencie div, stosując te same zasady, co w przypadku elementu div). Dzięki
javascript
html
css
user885355
źródło
źródło
Odpowiedzi:
Możesz ustawić
draggable
atrybut nafalse
w kodzie znaczników lub JavaScript.źródło
<img id="myImage" src="http://placehold.it/150x150" draggable="false">
-moz-user-select: none
. Możliwe rozwiązanie: dodajpointer-events: none
.draggable
sięfalse
całkowicie wyłączyć przeciągnij i upuść.Myślę, że możesz zmienić swoje
do
źródło
Spróbuj:
i staraj się tego unikać
źródło
Możesz użyć właściwości CSS, aby wyłączyć obrazy w przeglądarkach Webkit.
źródło
-ms-user-drag
,-moz-user-drag
, iuser-drag
. Świetne rozwiązanie tylko dla CSS!Spowoduje to wyłączenie przeciągania obrazu we wszystkich przeglądarkach , zachowując jednocześnie inne zdarzenia, takie jak kliknięcie i najechanie kursorem. Działa tak długo, jak długo dostępny jest dowolny z HTML5, JS lub CSS.
<img draggable="false" onmousedown="return false" style="user-drag: none" />
Jeśli jesteś pewien, że użytkownik będzie miał JS, wystarczy użyć atrybutu JS, itp. Aby uzyskać większą elastyczność, zapoznaj się z ondragstart, onselectstart i niektórymi plikami CSS typu tap / touch WebKit.
źródło
onmousedown="return false"
wystarczy. Konieczne jest również, aby użytkownik nie wybierał obrazu podczas przeciągania po nim, co pozwoliłoby mu na przeciągnięcie zaznaczenia.Obsługuj
dragstart
wydarzenie ireturn false
.źródło
Możesz przypisać alternatywny obraz ducha, jeśli naprawdę potrzebujesz użyć zdarzeń przeciągania i nie możesz ustawić draggable = false. Po prostu przypisz pusty plik png w następujący sposób:
źródło
setDragImage
, nawet jeśli obsługują przeciągnij i upuść, np. IE10 / 11.dragIcon.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
Umieść obraz jako tło pustego elementu div lub pod przezroczystym elementem. Gdy użytkownik klika obraz, aby przeciągnąć, klika element div.
Zobacz http://www.flickr.com/photos/thefella/5878724253/?f=hp
źródło
W przypadku przeglądarki Firefox musisz pójść trochę głębiej z tym:
Cieszyć się.
źródło
Zauważyłem, że w przypadku IE należy dodać atrybut draggable = "false" do obrazów i kotwic, aby zapobiec przeciąganiu. opcje CSS działają we wszystkich innych przeglądarkach. Zrobiłem to w jQuery:
źródło
Jest o wiele łatwiejsze rozwiązanie niż dodanie pustych detektorów zdarzeń. Po prostu ustaw
pointer-events: none
swój obraz. Jeśli nadal chcesz, aby było klikalne, dodaj wokół niego kontener, który wyzwala zdarzenie.źródło
źródło
Testowane w przeglądarce Firefox: usuwanie i przywracanie obrazu działa! I jest przezroczysty również podczas wykonania. Na przykład,
EDYCJA : Dziwnie działa to tylko w IE i Firefox. Dodałem też
draggable = false
do każdego obrazu. Wciąż duch z Chrome i Safari.EDYCJA 2 : Rozwiązanie obrazu tła jest naprawdę najlepsze. Jedyną subtelnością jest to, że
background-size
właściwość musi być przedefiniowana za każdym razem, gdy zmienia się obraz tła! A przynajmniej tak to wyglądało z mojej strony. Co więcej, miałem problem z normalnymiimg
tagami w IE, gdzie IE nie mógł zmienić rozmiaru obrazów. Teraz obrazy mają prawidłowe wymiary. Prosty:Warto też rozważyć te:
źródło
Możesz ustawić obraz, który jest wyświetlany, gdy element jest przeciągany. Przetestowano w Chrome.
setDragImage
posługiwać się
Alternatywnie, jak już wspomniano w odpowiedziach, możesz ustawić
draggable="false"
element HTML, jeśli brak możliwości przeciągnięcia elementu w ogóle nie stanowi problemu.źródło
Koniec wszystkiego, bez wybierania ani przeciągania, ze wszystkimi prefiksami przeglądarki:
Możesz również ustawić
draggable
atrybut nafalse
. Można to zrobić z inline HTML:draggable="false"
z javascript:elm.draggable = false
albo z jQuery:elm.attr('draggable', false)
.Możesz również obsłużyć
onmousedown
funkcję doreturn false
. Możesz to zrobić za pomocą wbudowanego HTML:,onmousedown="return false"
Javascript:elm.onmousedown=()=>return false;
lub jQuery:elm.mousedown(()=>return false)
źródło
Ta praca dla mnie, używam niektórych skryptów lightbox
źródło