使用 JavaScript 如何禁用右键单击或单击滚动条时如何在右键单击窗口中删除检查元素选项

Posted

技术标签:

【中文标题】使用 JavaScript 如何禁用右键单击或单击滚动条时如何在右键单击窗口中删除检查元素选项【英文标题】:using JavaScript how to disable the Right-click or how to remove the inspect element option in the right-click window when click on the scroll bar 【发布时间】:2021-09-08 06:30:55 【问题描述】:

我正在尝试禁用滚动条上的右键单击操作或删除我页面上右键单击菜单窗口中的检查元素选项。我正在使用以下代码来满足我的要求。但是在哪里遇到了我无法找到的问题,并且其他解决方案也没有想到。请在下面找到我的示例代码。请任何帮助表示赞赏。

Sample Application - 使用此链接您可以检查代码。

<html oncontextmenu="return false;">
   <head>
      <style>
      </style>
      <script >
         document.onkeypress = function (event) 
         event = (event || window.event);
         return keyFunction(event);
         
         document.onmousedown = function (event) 
         event = (event || window.event);
         return keyFunction(event);
         
         document.onkeydown = function (event) 
         event = (event || window.event);
         return keyFunction(event);
         
         
         //Disable right click script 
         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; 
         elsedocument.onmouseup=clickNS;document.oncontextmenu=clickIE; 
         document.oncontextmenu=new Function("return false")
         
         function keyFunction(event)
         //"F12" key
         if (event.keyCode == 123) 
         return false;
         
         
         if (event.ctrlKey && event.shiftKey && event.keyCode == 73) 
         return false;
         
         //"J" key
         if (event.ctrlKey && event.shiftKey && event.keyCode == 74) 
         return false;
         
         //"S" key
         if (event.keyCode == 83) 
         return false;
         
         //"U" key
         if (event.ctrlKey && event.keyCode == 85) 
         return false;
         
         //F5
         if (event.keyCode == 116) 
         return false;
         
         
         
      </script>
   </head>
   <body >
      <iframe style="width:100%"  src="https://africau.edu/images/default/sample.pdf#toolbar=0"></iframe>
      <div style="width:96%;height:473px;background-color:transparent;position:absolute;top:0px;max-width: 100%;">
   </body>
</html>

【问题讨论】:

为什么?即使你禁用了右键菜单,他们仍然可以打开开发者工具并转到元素选项卡。 你的解决方案有什么问题? 这个决赛将在新窗口中打开。可能是开发人员收费不来。 我没有看到任何打开新窗口的内容。 【参考方案1】:

右键单击默认行为是触发contextmenu 事件,其默认行为是显示上下文菜单。

为了防止这种默认行为,这样写:

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

请注意,它不会阻止人们使用 F12 访问开发者工具,对此您无能为力。

【讨论】:

他的代码有document.oncontextmenu=new Function("return false"),我认为基本上是等价的。 确实,虽然这样做的方式很奇怪 他的代码充满了过时的风格,比如event | window.event。这可能是 IE8 兼容性所必需的。 一个曾经附加到window的事件? ? IE 将当前事件放入全局变量event

以上是关于使用 JavaScript 如何禁用右键单击或单击滚动条时如何在右键单击窗口中删除检查元素选项的主要内容,如果未能解决你的问题,请参考以下文章

禁用右键单击、打印和查看源代码会使键 P 和 U 不起作用[重复]

禁用右键单击对安全性有影响吗?

如何禁用对 IFRAME 的右键单击

如何向禁用右键单击的 jQuery 添加异常?

在音频上禁用右键单击

VBA:如何从右键单击上下文菜单中禁用某些选项