2011-01-20 11 views
62

Chcę wiedzieć, jak wyłączyć prawy przycisk myszy na obrazach za pomocą jQuery.Wyłączanie klikania prawym przyciskiem myszy obrazów przy użyciu jquery

Wiem tylko to:

<script type="text/javascript" language="javascript"> 
    $(document).ready(function() { 
     $(document).bind("contextmenu",function(e) { 
      return false; 
     }); 
    }); 
</script> 
+3

to powinno działać czasami;). Ale zapomnij, istnieje 100 innych sposobów na zapisanie obrazu z internetu. Przy okazji, jeśli przekazujesz kliknięty obiekt, użyj go! http://jsfiddle.net/VZX4A/ – meo

+3

tak, wiem. Robię to, aby zmniejszyć liczbę kopii obrazów. Jest przeznaczony specjalnie dla tych, którzy tylko wiedzą, aby kliknąć prawym przyciskiem myszy i zapisać, np. Głupich użytkowników. –

+3

Po prostu nie rób tego. Nie chronisz obrazu przed skopiowaniem, a wyłączasz domyślną i oczekiwaną funkcjonalność przeglądarki. –

Odpowiedz

133

to działa:

$('img').bind('contextmenu', function(e) { 
    return false; 
}); 

Lub nowszej jQuery:

$('#nearestStaticContainer').on('contextmenu', 'img', function(e){ 
    return false; 
}); 

jsFiddle example

+2

dzięki człowiek to działa. –

+46

nowy sposób to: '$ ('body'). On ('contextmenu', 'img', function (e) { return false; }); 'chociaż polecam coś węższego niż 'ciało', jeśli możesz. – Myster

+1

jQuery z ponownie dwoma nokautami. <3 – Foxinni

10

jaki jest Twój cel wyłączając kliknij prawym przyciskiem myszy . Problem z każdą techniką polega na tym, że zawsze istnieje sposób na obejście ich. konsola do firefox (firebug) i chrome pozwala na rozłączenie tego zdarzenia. lub jeśli chcesz, aby obraz był chroniony, zawsze możesz po prostu spojrzeć na ich tymczasową pamięć podręczną dla obrazów.

Jeśli chcesz utworzyć własne menu kontekstowe, preventDefault jest w porządku. Po prostu wybierz swoje bitwy tutaj. nawet duża biblioteka JavaScript, taka jak tnyMCE, nie działa z powodu wszystkich przeglądarek ... i to nie dlatego, że nie jest to możliwe ;-).

$(document).bind("contextmenu",function(e){ 
    e.preventDefault() 
}); 

Osobiście jestem bardziej otwarty internet. Natywne zachowanie przeglądarki nie powinno być utrudniane przez interakcje stron. Jestem pewien, że można znaleźć inne sposoby interakcji, które nie są właściwym kliknięciem.

+2

-1. Nie jest to odpowiedź na pytanie. – richsage

+0

zmieniono na lepiej odpowiadający jako wyjaśnienie – yopefonic

7

Dla Wyłącz kliknij prawym klawiszem Option

<script type="text/javascript"> 
    var message="Function Disabled!"; 

    function clickIE4(){ 
     if (event.button==2){ 
      alert(message); 
      return false; 
     } 
    } 

    function clickNS4(e){ 
     if (document.layers||document.getElementById&&!document.all){ 
      if (e.which==2||e.which==3){ 
       alert(message); 
       return false; 
      } 
     } 
    } 

    if (document.layers){ 
     document.captureEvents(Event.MOUSEDOWN); 
     document.onmousedown=clickNS4; 
    } 
    else if (document.all&&!document.getElementById){ 
     document.onmousedown=clickIE4; 
    } 

    document.oncontextmenu=new Function("alert(message);return false") 
</script> 
+2

Rekwizyty dla czystej wersji JavaScript, ale OP poprosił o jQuery. –

+0

Powyższy kod pochodzi z końca lat 90. – mplungjan

2

byłoby możliwe, aby pozostawić możliwość prawym przyciskiem myszy i pobrać tylko kiedy zrobić oddzielny znak wodny jest umieszczony na obrazie. Oczywiście nie zapobiegnie to zrzuty ekranu, ale pomyślał, że może to być dobre pośrednie.

7

Powyższe metody nie działały w chrome i Firefoxie, chyba że użyłem "live" zamiast "bind".

Ten pracował dla mnie:

$('img').live('contextmenu', function(e){ 
    return false; 
}); 
+2

Działa z "nową drogą" wspomnianą przez @Myster –

1

Można spróbować to:

var message="Sorry, right-click has been disabled"; 

function clickIE() { 
    if (document.all) { 
     (message); 
     return false; 
    } 
} 

function clickNS(e) { 
    if (document.layers || (document.getElementById && !document.all)) { 
     if (e.which == 2||e.which == 3) { 
      (message); 
      return false; 
     } 
    } 
} 

if (document.layers) { 
    document.captureEvents(Event.MOUSEDOWN); 
    document.onmousedown = clickNS; 
} else { 
    document.onmouseup = clickNS; 
    document.oncontextmenu = clickIE; 
} 

document.oncontextmenu = new Function("return false") 

Checkout a demo here

1

Bardzo prostym sposobem jest dodanie obrazu jako tło do DIV następnie załadować pusty przezroczysty gif ustawiony na ten sam rozmiar, co DIV na pierwszym planie. to trzyma mniej zdeterminowanych. Nie mogą uzyskać tła bez przeglądania kodu i kopiowania adresu URL, a kliknięcie prawym przyciskiem myszy powoduje pobranie przezroczystego pliku GIF.

Powiązane problemy