是否可以删除“检查元素”?

IT技术 javascript google-chrome google-chrome-app
2021-03-17 16:13:29

是否可以通过 Javascript 删除或禁用 Chrome 应用程序中的“检查元素”上下文菜单?

我已经搜索了几个论坛,但没有明确的答案。

6个回答

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

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

为此我用谷歌搜索,终于得到了下面的链接,

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;
  }
}
还有一种方法——用户可以点击右上角的“...”菜单,选择“更多工具”,然后点击“开发者工具”。
2021-05-03 16:13:29
上述方法对鼠标和键盘禁用,但如果我去开发人员工具并从那里检查怎么办。
2021-05-12 16:13:29

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

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

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

但这只会阻止右键单击。有没有办法防止键盘快捷键?
2021-04-30 16:13:29

你不能。

网页上的所有内容都由浏览器呈现,他们希望网站能够正常工作,否则用户会鄙视他们。因此,浏览器希望使用代码检查器等工具向 Web 开发人员公开所有内容的较低级别的滴答声。

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

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

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

简而言之:如果您不希望人们在他们的浏览器中获得某些内容,那么您首先不应该将其发送到他们的浏览器

有点可能。

  1. 首先,使用ramakrishna 的解决方案来阻止 devtools 快捷键。

  2. devtools-detect添加到您的网站。这是来自他的 githubdevtools.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 过载,并且无法通过 devtools 与它进行交互。

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

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

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

我已经搜索了<meta>可能控制这一点的标签或 HTTP 标头,但没有任何突出之处

Gmail 阻止检查选项

这是控制帐户的组织(您的管理员),而不是网站。网站无法控制您是否可以检查元素。
2021-05-10 16:13:29