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

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


当前回答

有几件事需要考虑:

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

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

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

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

其他回答

如果不使用Javascript,您就无法完成您的要求。您可以选择使用的任何其他技术只能帮助在服务器端组成web页面,然后发送到浏览器。

没有好的解决方案,没有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); 
    }
});

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

我用这个代码禁用右键点击任何网页,它的工作很好。您可以使用此代码

jQuery(文档)时函数(){ jQuery(函数(){ jQuery(这个)。绑定("contextmenu",函数(事件){ event.preventDefault (); alert('右击禁用此站点!!') }); }); }); < html > < >头 <title>在网页中右键单击禁用</title> . < script src = " https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js " > < /脚本> < / >头 身体< > 您编写自己的代码 < /身体> < / html >

试试这段代码禁用检查元素选项

    jQuery(document).ready(function() {
    function disableSelection(e) {
        if (typeof e.onselectstart != "undefined") e.onselectstart = function() {
            return false
        };
        else if (typeof e.style.MozUserSelect != "undefined") e.style.MozUserSelect = "none";
        else e.onmousedown = function() {
            return false
        };
        e.style.cursor = "default"
    }
    window.onload = function() {
        disableSelection(document.body)
    };

    window.addEventListener("keydown", function(e) {
        if (e.ctrlKey && (e.which == 65 || e.which == 66 || e.which == 67 || e.which == 70 || e.which == 73 || e.which == 80 || e.which == 83 || e.which == 85 || e.which == 86)) {
            e.preventDefault()
        }
    });
    document.keypress = function(e) {
        if (e.ctrlKey && (e.which == 65 || e.which == 66 || e.which == 70 || e.which == 67 || e.which == 73 || e.which == 80 || e.which == 83 || e.which == 85 || e.which == 86)) {}
        return false
    };

    document.onkeydown = function(e) {
        e = e || window.event;
        if (e.keyCode == 123 || e.keyCode == 18) {
            return false
        }
    };

    document.oncontextmenu = function(e) {
        var t = e || window.event;
        var n = t.target || t.srcElement;
        if (n.nodeName != "A") return false
    };
    document.ondragstart = function() {
        return false
    };
});

我知道我迟到了,但我想为我将要提供的答案创建一些假设和解释。

我可以禁用右键吗?

我可以禁用右击在我的网页不使用Javascript?

是的,通过使用JavaScript,你可以禁用任何发生的事件,你可以只通过JavaScript做到这一点。你只需要:

工作硬件 一个网站或其他地方,你可以从那里了解密钥代码。因为你会需要他们。

现在假设你想阻止回车键这里是代码:

function prevententer () {
 if(event.keyCode == 13) {
  return false;
 }
}

右击使用这个:

event.button == 2

在event.keyCode的位置。你会阻止它。

我想问这个问题是因为大多数浏览器允许用户通过Javascript禁用它。

你是对的,浏览器允许你使用JavaScript, JavaScript为你做了所有的工作。你不需要设置任何东西,只需要在头部的脚本属性。

为什么不应该禁用它?

最主要和最快速的答案是,用户不会喜欢它。每个人都需要自由,没有人我的意思是没有人想被屏蔽或禁用,几分钟前我在一个网站上,它阻止了我的右键点击,我想为什么?您需要保护源代码吗?然后这里按ctrl+shift+J,我已经打开了控制台,现在我可以去HTML-code选项卡。来阻止我吧。这不会给你的应用程序添加任何安全层。

有很多有用的菜单在右键单击,如复制,粘贴,搜索谷歌的“文本”(在Chrome中)和更多。因此,用户希望获得方便的访问,而不是记住大量的键盘快捷键。任何人仍然可以复制上下文,保存图像或做任何他想做的事情。

浏览器使用鼠标导航:一些浏览器如Opera使用鼠标导航,所以如果你禁用它,用户肯定会讨厌你的用户界面和脚本。

所以这是基本的,我打算写一些关于保存源代码的东西,呵呵,但是,让它成为你问题的答案。

键码参考:

按键和鼠标按键代码:

http://www.w3schools.com/jsref/event_button.asp

https://developer.mozilla.org/en-US/docs/Web/API/event.button(也会受到用户的赞赏)。

为什么不禁用右键:

http://www.sitepoint.com/dont-disable-right-click/