使用 jquery 禁用右键单击图像

IT技术 javascript jquery
2021-02-24 18:19:28

我想知道如何使用 jQuery 禁用右键单击图像。

我只知道这个:

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

这有效:

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

或者对于较新的 jQuery:

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

jsFiddle 示例

jQuery 再次以一二淘汰赛。<3
2021-04-23 18:19:28
嗨雅各布,你能告诉我支持这个 jQuery 功能的各个浏览器的最低版本是什么吗?
2021-04-27 18:19:28
新方法是:$('body').on('contextmenu', 'img', function(e){ return false; }); 尽管如果可以的话,我会推荐比“body”更窄的东西。
2021-05-04 18:19:28
感谢您的回复,但是当用户按“shift”+ right Click 时,会显示上下文菜单。
2021-05-20 18:19:28

您禁用右键单击的目的是什么。任何技术的问题在于总有办法绕过它们。firefox (firebug) 和 chrome 的控制台允许解除该事件的绑定。或者,如果您希望图像受到保护,您可以随时查看图像的临时缓存。

如果您想创建自己的上下文菜单, preventDefault 很好。只需在这里选择您的战斗。甚至像 tnyMCE 这样的大型 JavaScript 库都不能在所有浏览器上运行……这并不是因为它不可能;-)。

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

就个人而言,我更喜欢开放的互联网。本机浏览器行为不应受到页面交互的阻碍。我相信可以找到其他不是右键单击的交互方式。

更改为更适合作为澄清
2021-05-18 18:19:28

对于禁用右键单击选项

<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>
纯 Javascript 版本的道具,但 OP 要求使用 jQuery。
2021-05-11 18:19:28

在 chrome 和 firefox 中,除非我使用“live”而不是“bind”,否则上述方法不起作用。

这对我有用:

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

是否可以在完成后在图像上放置单独的水印时保留右键单击和下载的功能。当然,这不会阻止屏幕截图,但认为这可能是一个很好的中间立场。