是否可以删除 "Inspect Element"?

Is it possible to remove "Inspect Element"?

是否可以通过 Javascript 删除或禁用 [​​=16=] 应用程序中的 "Inspect Element" 上下文菜单?

找了几个论坛都没有确定的答案

没有。您能做的最接近的事情是捕获右键单击,并使它们不打开上下文菜单,但精明的用户无论如何都会知道键盘组合或菜单选项来访问它,从而打败了重点。这是浏览器的一项功能,因此您在页面中所做的任何事情都不会破坏它(除非在他们的计算机上安装恶意软件)。

可以像这样防止用户通过右击打开上下文菜单(javascript):

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

通过监听 contextmenu 事件并防止默认行为 "showing the menu",菜单将不会显示。 但是用户仍然可以通过控制台检查代码(例如在 Chrome 中按 F12)。

<script language="javascript">
document.onmousedown=disableclick;
status="Right Click Disabled";
function disableclick(event)
{
  if(event.button==2)
   {
     alert(status);
     return false;    
   }
}
</script>

我对一页有一个要求。在该页面中,我想阻止用户执行以下操作,

  • 右键单击
  • F12
  • Ctrl + Shift + I
  • Ctrl + Shift + J
  • Ctrl + Shift + C
  • Ctrl + U

为此我谷歌了一下,终于得到了下面的link,

http://andrewstutorials.blogspot.in/2014/03/disable-ways-to-open-inspect-element-in.html

我用 Chrome 和 Firefox 对其进行了测试。它正在满足我的要求。

右击

 <body oncontextmenu="return false">

document.onkeydown = function(e) {
  if(event.keyCode == 123) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
     return false;
  }
}

虽然没有答案,Chrome 肯定有办法做到这一点,我似乎在 A/B 测试中,因为我的工作帐户无法在 Gmail 中检查,同时我的个人帐户可以。

我已经搜索了 <meta> 标签或 HTTP headers 可能会控制它,但没有什么特别的

如果对任何人有帮助,可以通过向其中添加样式 pointer-events: none; 来为单个元素禁用检查元素。

如果您有任何元素纯粹为了对齐子元素而必然与大面积更有用的元素重叠,这将非常有用;它可以让您防止对齐器元素响应检查元素命令。

你不能。

网页上的所有内容都由浏览器呈现,他们希望网站能够在其上正常运行,否则他们的用户会鄙视他们。 因此,浏览器希望使用代码检查器等工具向 Web 开发人员公开所有内容的底层标记。

您可以尝试阻止用户通过按键事件进入菜单。像这样:

// Disable inspect element
$(document).bind("contextmenu",function(e) {
  e.preventDefault();
});
$(document).keydown(function(e){
  if(e.which === 123){
    return false;
}
});

但是如果用户想看代码,他会用另一种方式来做。他只需要多一点时间。

简短:如果您不希望人们在他们的浏览器中获得某些东西,您不应该将它发送到他们的浏览器第一名。

将此添加到您网页的 html 标记中

<html oncontextmenu="return false">

有点有点可能。

  1. 首先,使用方案屏蔽devtools快捷键

  2. 从他的 github 添加 devtools-detect to your website. Here is a quick link for the devtools.js 文件。

  3. 然后,最后,添加以下内容:

if (devtools.isOpen) {


    setInterval(() => {

        var $all = document.querySelectorAll("*");

        for (var each of $all) {
            each.classList.add(`asdjaljsdliasud8ausdijaisdluasdjasildahjdsk${Math.random()}`);
        }
        

    }, 5);
}

或者这样:

if (devtools.isOpen) {
while (true) {
    console.log("access denied")
}
}

它基本上会使 DOM 过载并使其无法通过开发工具与之交互。

另外,这只是一个例子;你可以使用更复杂的方法来重载 DOM 而不是仅仅添加 类.

我认为它不会完美运行,但它应该足以提供至少一些额外的次要“安全”层。

document.addEventListener('keydown', function() {
    if (event.keyCode == 123) {
      alert("You Can not Do This!");
      return false;
    } else if (event.ctrlKey && event.shiftKey && event.keyCode == 73) {
      alert("You Can not Do This!");
      return false;
    } else if (event.ctrlKey && event.keyCode == 85) {
      alert("You Can not Do This!");
      return false;
    }
  }, false);
  
  if (document.addEventListener) {
    document.addEventListener('contextmenu', function(e) {
      alert("You Can not Do This!");
      e.preventDefault();
    }, false);
  } else {
    document.attachEvent('oncontextmenu', function() {
      alert("You Can not Do This!");
      window.event.returnValue = false;
    });
  }

无 F12 无右击

你好 我用这个代码。 玩得开心♥

你不能阻止它,但你可以阻止一些键:

将此添加到您的脚本中:

<script>
 
 document.addEventListener('contextmenu', function(e) {
  e.preventDefault();
 });
 document.addEventListener('keydown', function(e) {
 if (event.keyCode == 123) {
  return false;
 }
 if (e.ctrlKey && e.shiftKey) {
  return false;
 }
 if (event.ctrlKey && event.keyCode == 85) {
  return false;
 }
});
/* other script code */
</script>

以上答案很完美,但在按 ctrl+shift+I 时出现一些问题。在之前的回答中,它仍然打开检查。通过添加 event.preventdefault() 解决这个问题

document.addEventListener('keydown', function() {
    if (event.keyCode == 123) {
      alert("You Can not Do This!");
      return false;
    } else if (event.ctrlKey && event.shiftKey && event.keyCode == 73) {
      alert("You Can not Do This!");
       event.preventDefault();
      return false;
    } else if (event.ctrlKey && event.keyCode == 85) {
      alert("You Can not Do This!");
      return false;
    }
  }, false);
  
  if (document.addEventListener) {
    document.addEventListener('contextmenu', function(e) {
      alert("You Can not Do This!");
      e.preventDefault();
    }, false);
  } else {
    document.attachEvent('oncontextmenu', function() {
      alert("You Can not Do This!");
      window.event.returnValue = false;
    });
  }

是的,可以停止在浏览器中检查网站。 如您所知,可以通过三种方式在浏览器中检查网站

  1. 使用键盘快捷键
  2. 使用右键单击
  3. 使用浏览器的开发者菜单

我有 1 和 2 的解决方案,这里是 JavaScript 代码 但是用户用户第三种方式是非常罕见的情况

// take body to change the content
const body = document.getElementsByTagName('body');
// stop keyboard shortcuts
window.addEventListener("keydown", (event) => {
  if(event.ctrlKey && (event.key === "S" || event.key === "s")) {
     event.preventDefault();
     body[0].innerHTML = "sorry, you can't do this "
  }

  if(event.ctrlKey && (event.key === "C")) {
     event.preventDefault();
     body[0].innerHTML = "sorry, you can't do this "
  }
  if(event.ctrlKey && (event.key === "E" || event.key === "e")) {
     event.preventDefault();
     body[0].innerHTML = "sorry, you can't do this "
  }
  if(event.ctrlKey && (event.key === "I" || event.key === "i")) {
     event.preventDefault();
     body[0].innerHTML = "sorry, you can't do this ";
  }
  if(event.ctrlKey && (event.key === "K" || event.key === "k")) {
     event.preventDefault();
     body[0].innerHTML = "sorry, you can't do this ";
  }
  if(event.ctrlKey && (event.key === "U" || event.key === "u")) {
     event.preventDefault();
     body[0].innerHTML = "sorry, you can't do this ";
  }
});
// stop right click
document.addEventListener('contextmenu', function(e) {
  e.preventDefault();
});

试试这个:

document.onkeydown = function(e) {
if(event.keyCode == 123) {
    return false;
}
if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'C'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'X'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'Y'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'Z'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'V'.charCodeAt(0)){
    return false;
}
if (e.keyCode == 67 && e.shiftKey && (e.ctrlKey || e.metaKey)){
    return false;
}
if (e.keyCode == 'J'.charCodeAt(0) && e.altKey && (e.ctrlKey || e.metaKey)){
    return false;
}
if (e.keyCode == 'I'.charCodeAt(0) && e.altKey && (e.ctrlKey || e.metaKey)){
    return false;
}
if ((e.keyCode == 'V'.charCodeAt(0) && e.metaKey) || (e.metaKey && e.altKey)){
    return false;
}
if (e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'S'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'H'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'A'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'F'.charCodeAt(0)){
    return false;
}
if(e.ctrlKey && e.keyCode == 'E'.charCodeAt(0)){
    return false;
}
}
if (document.addEventListener) {
    document.addEventListener('contextmenu', function(e) {
    e.preventDefault();
    }, false);
}else{
    document.attachEvent('oncontextmenu', function() {
    window.event.returnValue = false;
    });
}

是的,上面的一些脚本成功地禁用了一个但不能关闭另一个所以下面是上面的摘要。

document.addEventListener('contextmenu',(e)=>{
    e.preventDefault();
  }
  );
  document.onkeydown = function(e) {
  if(event.keyCode == 123) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
     return false;
  }
}

使用这个你就安全了,现在没有人可以窃取你的代码或使用 js 来破解你的数据库!

很简单,按F6然后按F12即可。

旧答案

即使在 Google Chrome 中也无法删除检查元素。
用户可以完全控制在浏览器中执行的任何代码。
如果他们想在没有 :

的情况下检查网页
  • 按任意键
  • 使用开发 tool/special Chrome 扩展程序
  • 使用鼠标

他们只需在进入页面之前打开开发工具,您无法阻止这种情况,也不知道他们是否在使用它。

新答案

我搜索了禁用 devtools 的方法,但我发现这是不可能的,除非您想在工作计算机上禁用 devtools(使用 Windows 服务器邮政总署)。如果是这样的话,方法如下

  • 禁用开发者工具Here is how
  • 禁用任何 chrome 扩展的安装(禁用 Postman 等扩展......)Here is how
  • 禁止安装任何软件,禁止下载其他浏览器Here is how

如果您有 company/school,这是一个很好的解决方案,例如,您想在 computers/domain 上禁用 devtools 进行考试。
this blog

中了解有关 windows 服务器 GPO 的更多信息

在 nextJs 中,您可以将此代码放入 _app.tsx_app.js 文件中,并使用 e.key 而不是 e.key 代码,因为它已被弃用

    useEffect(() => {
    typeof window !== undefined &&
      window.document.addEventListener("contextmenu", (e) => {
        e.preventDefault();
      });
  }, []);

  document.onkeydown = function(e) {
    console.log(e.key)
    if(e.key === 'F12') {
       return false;
    }
    if(e.ctrlKey && e.shiftKey && e.key === 'I') {
       return false;
    }
    if(e.ctrlKey && e.shiftKey && e.key === 'C') {
       return false;
    }
    if(e.ctrlKey && e.shiftKey && e.key === 'J') {
       return false;
    }
    if(e.ctrlKey && e.key === 'u') {
       return false;
    }
  }