是否可以通过 Javascript 删除或禁用 Chrome 应用程序中的“检查元素”上下文菜单?
我已经搜索了几个论坛,但没有明确的答案。
是否可以通过 Javascript 删除或禁用 Chrome 应用程序中的“检查元素”上下文菜单?
我已经搜索了几个论坛,但没有明确的答案。
我对一页有一个要求。在该页面中,我想阻止用户执行以下操作,
为此我用谷歌搜索,终于得到了下面的链接,
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;
}
}
可以通过像这样(javascript)右键单击来阻止用户打开上下文菜单:
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
});
通过侦听contextmenu
事件并阻止“显示菜单”的默认行为,将不会显示菜单。但是用户仍然可以通过控制台检查代码(例如在 Chrome 中按 F12)。
你不能。
网页上的所有内容都由浏览器呈现,他们希望网站能够正常工作,否则用户会鄙视他们。因此,浏览器希望使用代码检查器等工具向 Web 开发人员公开所有内容的较低级别的滴答声。
您可以尝试阻止用户通过按键事件进入菜单。像这样的东西:
// Disable inspect element
$(document).bind("contextmenu",function(e) {
e.preventDefault();
});
$(document).keydown(function(e){
if(e.which === 123){
return false;
}
});
但是如果用户想看到代码,他会用另一种方式来做。他只需要一点时间。
简而言之:如果您不希望人们在他们的浏览器中获得某些内容,那么您首先不应该将其发送到他们的浏览器。
这有点可能。
首先,使用ramakrishna 的解决方案来阻止 devtools 快捷键。
将devtools-detect添加到您的网站。这是来自他的 github的devtools.js文件的快速链接。
然后,最后,添加以下内容:
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,而不仅仅是添加类。
我不认为它会完美地工作,但它应该足以提供至少一些额外的“安全”层。