Kim*_*dez 10 javascript google-chrome google-chrome-app
是否可以通过Javascript删除或禁用Chrome应用中的"Inspect Element"上下文菜单?
我搜索了几个论坛,但没有明确的答案.
小智 16
我对一个页面有一个要求.在该页面中,我想阻止用户执行以下操作,
为此我用Google搜索,最后得到以下链接,
http://andrewstutorials.blogspot.in/2014/03/disable-ways-to-open-inspect-element-in.html
我测试了Chrome浏览器和fire foz.它符合我的要求.
右键点击
`<body oncontextmenu="return false;">`
Run Code Online (Sandbox Code Playgroud)
按键
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;
}
}
Run Code Online (Sandbox Code Playgroud)
可以通过这样右键单击来防止用户打开上下文菜单(javascript):
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
通过侦听contextmenu事件并阻止默认行为“显示菜单”,该菜单将不会显示。但是用户仍然可以通过控制台检查代码(例如,通过按Chrome中的F12键)。
这是有可能的。
首先,使用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);
}
Run Code Online (Sandbox Code Playgroud)
或者也许是这样的:
if (devtools.isOpen) {
while (true) {
console.log("access denied")
}
}
Run Code Online (Sandbox Code Playgroud)
它基本上会使 DOM 过载,并使其无法通过开发工具与其交互。
另外,这只是一个例子;您可以使用更复杂的方法来重载 DOM,而不仅仅是添加类。
我不认为它会完美地工作,但它应该足以提供至少一些额外的小层“安全”。
小智 6
你不能。
网页上的所有内容都由浏览器呈现,他们希望网站能够正常工作,否则用户会鄙视他们。因此,浏览器希望使用代码检查器等工具向 Web 开发人员公开所有内容的较低级别的滴答声。
您可以尝试阻止用户通过按键事件进入菜单。像这样的东西:
// Disable inspect element
$(document).bind("contextmenu",function(e) {
e.preventDefault();
});
$(document).keydown(function(e){
if(e.which === 123){
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但是如果用户想看到代码,他会用另一种方式来做。他只需要一点时间。
简而言之:如果您不希望人们在他们的浏览器中获得某些内容,则首先不应将其发送到他们的浏览器。
小智 5
"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> Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24589 次 |
| 最近记录: |