我可以禁用右击在我的网页不使用JavaScript?我问这个问题是因为大多数浏览器允许用户禁用JavaScript。

如果不是,我如何使用JavaScript禁用右键?


当前回答

将此代码放入页面的<head>标记中。

<script type="text/javascript"> 
function disableselect(e){  
return false  
}  

function reEnable(){  
return true  
}  

//if IE4+  
document.onselectstart=new Function ("return false")  
document.oncontextmenu=new Function ("return false")  
//if NS6  
if (window.sidebar){  
document.onmousedown=disableselect  
document.onclick=reEnable  
}
</script>

这将禁用右键点击整个网页,但只有当JavaScript启用。

其他回答

下面有三种最流行的方法来禁用在网页上单击鼠标右键。

#1使用HTML正文标签

<body oncontextmenu="return false;">

#2使用CSS

body {
    -webkit-user-select: none;  /* Chrome all / Safari all */
    -moz-user-select: none;     /* Firefox all */
    -ms-user-select: none;      /* IE 10+ */
    -o-user-select: none;
    user-select: none;
}

#3使用JavaScript

document.addEventListener('contextmenu', e => e.preventDefault());

如果你的目标是阻止别人下载你的图片,就像大多数人说的那样,禁用右键几乎是无效的。

假设您正在尝试保护图像,替代方法是-

使用flash播放器,用户无法下载,但他们可以轻松地进行屏幕捕捉。

如果你想更笨拙,使图像的背景一个div,包含一个透明的图像,à la -

<div style="background-image: url(YourImage.jpg);">
   <img src="transparent.gif"/>
</div>

将足以阻止随意窃取您的图像(参见下面的示例),但与所有这些技术一样,如果对html有基本的了解,就很难击败它们。

如果您不关心在用户每次尝试右击时提醒他们一条消息,那么可以尝试将此添加到body标签中

<body oncontextmenu="return false;">

这将阻止对上下文菜单的所有访问(不仅从鼠标右键,而且从键盘)。

然而,正如在其他回答中提到的,添加右击禁用功能确实没有意义。任何具备基本浏览器知识的人都可以查看源代码并提取所需的信息。

禁用网页上的右键很简单。只需几行JavaScript代码就可以完成这项工作。下面是JavaScript代码:

$("html").on("contextmenu",function(e){
   return false;
});

在上面的代码中,我选择了标签。在你添加了这三行代码后,它将禁用在网页上的右键单击。

源码:禁用右键,复制,在网页上使用jQuery剪切

最初的问题是关于如何在用户可以禁用JavaScript的情况下停止右击:这听起来邪恶而邪恶(因此有负面的回答)——但所有的副本都重定向到这里,即使许多副本的目的不那么邪恶。

例如,在HTML5游戏中使用右键按钮。这可以用上面的内联代码来实现,或者像这样更好一点:

document.addEventListener("contextmenu", function (e){
    e.preventDefault();
}, false);

但如果你正在制作一个游戏,那么请记住,右键按钮会触发上下文菜单事件——但它也会触发常规的鼠标下拉和鼠标上拉事件。因此,您需要检查事件的which属性,以确定触发事件的是左(which === 1)、中(which == 2)或右(which === 3)鼠标按钮。

下面是jQuery的一个例子——注意,按下鼠标右键将触发三个事件:鼠标按下事件、上下文菜单事件和鼠标起事件。

// With jQuery
$(document).on({
    "contextmenu": function (e) {
        console.log("ctx menu button:", e.which); 

        // Stop the context menu
        e.preventDefault();
    },
    "mousedown": function(e) { 
        console.log("normal mouse down:", e.which); 
    },
    "mouseup": function(e) { 
        console.log("normal mouse up:", e.which); 
    }
});

所以如果你在游戏中使用鼠标左右键,你就必须在鼠标处理程序中执行一些条件逻辑。