是否有可能通过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 = (e) => {
if (e.key == 123) {
e.preventDefault();
}
if (e.ctrlKey && e.shiftKey && e.key == 'I') {
e.preventDefault();
}
if (e.ctrlKey && e.shiftKey && e.key == 'C') {
e.preventDefault();
}
if (e.ctrlKey && e.shiftKey && e.key == 'J') {
e.preventDefault();
}
if (e.ctrlKey && e.key == 'U') {
e.preventDefault();
}
};
可以通过以下JavaScript代码防止用户通过右键单击打开上下文菜单:
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
});
通过监听contextmenu
事件并阻止默认行为——"显示菜单",菜单将不会被显示出来。
但用户仍然可以通过控制台(例如在Chrome中按下F12)查看代码。通过监听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,而不仅仅是添加类。
我认为它不会完美地工作,但应该足以提供至少一些额外的“安全”层。
"put this script before ending your body tag"
<script>
document.addEventListener('contextmenu', event=> event.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;
}
}
</script>
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来破解你的数据库!
不行。最接近的方法是捕获右键单击,防止其打开上下文菜单,但是精明的用户仍然可以通过键盘组合键或菜单选项访问它,从而失去了意义。这是浏览器的功能,因此您在页面中所做的任何事情都无法击败它(除非在他们的计算机上安装恶意软件)。
chrome://inspect
。 - Xan<html oncontextmenu="return false">
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,不许右键
你好 我使用这些代码。 愉快地玩耍♥