Отключение правого клика по изображениям с помощью jquery

Я хочу знать, как отключить правый щелчок по изображениям с помощью jQuery.

Я знаю только это:

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

Ответ 1

Это работает:

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

Или для более нового jQuery:

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

Пример jsFiddle

Ответ 2

Какова ваша цель отключить правый щелчок. проблема с любой техникой заключается в том, что всегда есть способ обойти их. консоль для firefox (firebug) и хром позволяют отменить это событие. или если вы хотите, чтобы изображение было защищено, всегда можно просто взглянуть на их временный кеш для изображений.

Если вы хотите создать собственное контекстное меню, функция preventDefault прекрасна. Просто выберите свои битвы здесь. даже большая библиотека JavaScript, такая как tnyMCE, работает во всех браузерах... и это не потому, что это невозможно; -).

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

Лично я больше вхожу в открытый интернет. Собственное поведение браузера не должно мешать взаимодействию страниц. Я уверен, что можно найти другие способы взаимодействия, которые не являются правым кликом.

Ответ 3

Отключить параметр правой кнопки мыши

<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>

Ответ 4

В chrome и firefox описанные выше методы не работают, если я не использовал "live" вместо "bind".

Это сработало для меня:

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

Ответ 5

Можно ли оставить возможность щелкнуть правой кнопкой мыши и загрузить, как только будет сделан отдельный водяной знак на изображении. Конечно, это не будет препятствовать снимкам экрана, но подумал, что это может быть хорошей средой.

Ответ 6

Вы можете попробовать следующее:

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")

Ознакомьтесь с демо здесь

Ответ 7

Очень простой способ - добавить изображение в качестве фона в DIV, а затем загрузить пустой прозрачный gif, установленный в тот же размер, что и DIV на переднем плане. который сохраняет менее решительный характер. Они не могут получить фон без просмотра кода и копирования URL-адреса, а щелчок правой кнопкой мыши просто загружает прозрачный gif.

Ответ 8

Лучший способ сделать это без jQuery:

const images = document.getElementsByTagName('img');
for (let i = 0; i < images.length; i++) {
    images[i].addEventListener('contextmenu', event => event.preventDefault());
}

Ответ 9

Это должно работать

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