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

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


当前回答

最初的问题是关于如何在用户可以禁用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); 
    }
});

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

其他回答

是的,你可以使用HTML和Javascript禁用它。 只需在你的body或元素上添加oncontextmenu="return false;" 它非常简单,只是使用有效的HTML和Javascript,没有jQuery。

像下面这样做(它也适用于firefox):

$(document).on("contextmenu",function(e){

     if( e.button == 2 ) {
         e.preventDefault();
          callYourownFucntionOrCodeHere();
     }
return true;
});

有几件事需要考虑:

像chrome商店中“启用右键”这样的浏览器插件的存在是有原因的,你无法绕过它们。你根本无法阻止人们下载你的内容,因为他们必须下载你的内容才能在浏览器中看到;人们尝试,但它总是在那里。

一般来说,如果内容不应该公开,就不要放在网上。

此外,不能右击也是一个可访问性问题,在许多情况下相当于对盲人、残疾人或老年人的非法歧视。查看你当地的法律,但在美国,它以联邦ADA的形式积极反对法律,因为盲人或老年人可能有视力问题,是一个受法律保护的阶层。

所以与其这样做,浪费大量的时间和精力,还不如不要费心去做这个。这可能会让你的公司被起诉,或者让他们无法通过合规审计。

重要提示:这取决于浏览器和操作系统是否允许这样的预防!

你应该这么做吗?不。因为它不会阻止用户,但它只会惹恼他/她。

你会用吗?是的。例子:在某些网页应用中,你想要定制弹出菜单,在游戏中,用户可能会因为错误地单击右键而感到恼火,以及其他情况。

Ubuntu 16.04中的Chrome (v65) =您可以禁用右键单击。

Chrome (v65)在Mac OS 10.11 =你不能禁用右键。

Chrome (v65)在Windows 7 =你不能禁用右键。

Mac OS 10.11中的Firefox (v41) =您可以禁用右键单击。

Windows 7中的Firefox (v43) =您可以禁用右键单击。

// Vanilla JS way
document.addEventListener('contextmenu', function(e){
    e.preventDefault();
});

// jQuery way
$(document).bind('contextmenu', function(e) {
    e.preventDefault();
});
    <script>
        window.oncontextmenu = function () {
            console.log("Right Click Disabled");
            return false;
        }
    </script>