禁用使用jquery右键单击图像

问题描述:

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

我只知道这一点:

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

这应该有时工作;)。但忘记吧,还有其他100种从网络上保存图像的方式。顺便说一下,如果你传递了点击的对象,然后使用它! http://jsfiddle.net/VZX4A/ – meo 2011-01-20 23:11:25

+3

是的,我知道。我这样做只是为了降低图像副本的数量。它专门用于那些只知道右键点击并保存愚蠢用户的人。 – 2011-01-20 23:33:07

+3

只是不。您无法保护图像不被复制,并且禁用浏览器的默认和预期功能。 – 2011-01-20 23:48:17

这工作:

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

或者较新的jQuery:

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

jsFiddle example

什么是你禁止的目的右键点击。任何技术的问题在于总有一种方法可以绕过它们。 firefox(firebug)和chrome的控制台允许解除该事件的绑定。或者如果你想让图像受到保护,人们总是可以看看图像的临时缓存。

如果你想创建自己的上下文菜单中的preventDefault是罚款。在这里挑选你的战斗吧。甚至没有像tnyMCE这样的大型JavaScript库可以在所有浏览器上工作......并不是因为这是不可能的;-)。

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

我个人更喜欢开放的互联网。原生浏览器行为不应受到页面交互的阻碍。我相信可以找到其他方式进行交互,这不是正确的点击。

对于禁用右键点击选项

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

有没有可能离开右击并在完成后单独水印被放置在图像上刚刚下载的能力。当然,这不会阻止屏幕截图,但认为这可能是一个好的中间立场。

在Chrome和Firefox上述方法没有工作,除非我用的不是“绑定”“活”。

这为我工作:

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

你可以试试这个:

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

一个非常简单的方法是将图像添加为背景,以一个DIV,然后负载一个空的透明gif设置为与前景中的DIV相同的大小。这使得不那么确定。他们无法获取背景,而无法查看代码并复制URL并右键单击下载透明gif。