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

问题描述

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

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;} 
         else{document.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%" height="473" 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>

解决方法

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

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...