可以删除“检查元素”吗?

44

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

我在几个论坛上搜索过,但没有明确的答案。


1
你是指右键菜单吗? - David Snabel
@David:是的,David和我刚刚通过使用oncontextmenu="return false"找到了解决方案。 - Kim Honoridez
你做不到!!! Ctrl+Mayus+I 可以随时打开Chrome的开发者工具!!! - Danyel Cabello
2
是的,通过制作Web应用程序,用户将始终能够查看源代码。您应该选择本机桌面应用程序。 - 255kb
3
当你说他们不希望能够看到源代码时,是指生成网页的代码吗?因为要向他们展示任何内容,你必须发送HTML。你可以选择使用最少的JavaScript,这样所有东西都在服务器上生成,对他们来说将是一个黑盒子(他们无法看到发生了什么),但是要给他们一个网页,你必须发送HTML(除非你想使用Flash或Java Applet这样的插件,但即使那些也可以被反向工程、反编译等)。 - childofsoong
显示剩余3条评论
18个回答

1

是的,可以停止在浏览器中检查网站。

正如您所知,有三种方法可以在浏览器中检查网站:

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

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

// 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();
});

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

0

在Next.js中,你可以将这段代码放在_app.tsx_app.js文件中,并使用e.key而不是e.keyCode,因为它已被弃用。

    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;
    }
  }

0

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

将以下内容添加到你的脚本中:

<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>

0

试试这个:

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;
    });
}

您的答案可以通过提供更多支持信息来改进。请进行[编辑]以添加进一步的细节,例如引用或文档,以便他人可以确认您的答案是正确的。您可以在帮助中心中找到更多有关撰写良好答案的信息。 - Community

0
上面的答案是完美的,但是当按下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;
    });
  }


0
如果有人需要帮助,可以通过添加样式pointer-events: none;来禁用单个元素的检查元素功能。
如果您有任何仅用于对齐子元素的元素,这些子元素必须重叠在更多有用元素的大面积上,那么这非常有用;它可以让您防止对齐元素响应检查元素命令。

他们可以随时打开开发者工具并导航到具有“禁用检查”菜单的元素。 - Reality
@Reality 这个技巧并不是为了阻止访问者检查元素(祝你好运),而是为了帮助开发者更好地使用“检查元素”功能,以便更准确地选择感兴趣的元素(即可见元素),而不是可能会重叠在其上的某个大型隐形元素。 - Jamie Birch
1
哦,是的。那真的会有所帮助。我试图选择一个元素但却选中了背景,这种情况我已经遇到过很多次了,哈哈。 - Reality

-3

很简单,只需按下F6,然后再按下F12


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接