JavaScript 实现禁止打开控制台(右键/工具栏/F12/Shift+Ctrl+I)
前两天分享的插件 WP Content Copy Protection & No Right Click——深度保护您的网站内容 有网友说可以把检查代码的功能给屏蔽了,经我个人测试发现我们依旧可以通过 F12、Shift+Ctrl+I等一些操作将控制台调取出来,为了更好地保护网站内容,决定分享一篇如何禁止用户打开控制台的文章,也就有了此文。
网上找的很多代码不管用,最后在 wangning1125 博客上发现下面这段代码测试有效,分享给大家。先把原版代码放在下面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type="text/css"> /*禁止选中文字*/ body{ -moz-user-select: none; /*火狐*/ -webkit-user-select: none; /*webkit浏览器*/ -ms-user-select: none; /*IE10*/ -khtml-user-select: none; /*早期浏览器*/ user-select: none; } </style>
</head><body> <p>Test</p>
<script type='text/javascript'> //禁用右键(防止右键查看源代码) window.oncontextmenu=function(){return false;} //禁止任何键盘敲击事件(防止F12和shift+ctrl+i调起开发者工具) window.onkeydown = window.onkeyup = window.onkeypress = function () { window.event.returnValue = false; return false; } //如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面 var h = window.innerHeight,w=window.innerWidth; window.onresize = function () { if (h!= window.innerHeight||w!=window.innerWidth){ window.close(); window.location = "about:blank"; } } /*好吧,你的开发者工具是单独的窗口显示,不会改变原来网页的高度和宽度, 但是你只要修改页面元素我就重新加载一次数据,让你无法修改页面元素(不支持IE9以下浏览器)*/ if(window.addEventListener){ window.addEventListener("DOMCharacterDataModified", function(){window.location.reload();}, true); window.addEventListener("DOMAttributeNameChanged", function(){window.location.reload();}, true); window.addEventListener("DOMCharacterDataModified", function(){window.location.reload();}, true); window.addEventListener("DOMElementNameChanged", function(){window.location.reload();}, true); window.addEventListener("DOMNodeInserted", function(){window.location.reload();}, true); window.addEventListener("DOMNodeInsertedIntoDocument", function(){window.location.reload();}, true); window.addEventListener("DOMNodeRemoved", function(){window.location.reload();}, true); window.addEventListener("DOMNodeRemovedFromDocument", function(){window.location.reload();}, true); window.addEventListener("DOMSubtreeModified", function(){window.location.reload();}, true); }
</script>
</body>
</html>
代码本身应该说没有什么问题,但是后面“通过监听页面元素变化来重新加载页面”的代码对于一些页面上有太多效果的网站获取会导致你的网站崩溃,比如我博客上因为设置了标题滚动(具体请看这篇文章:JavaScript 实现网站标题自定义、滚动、闪烁),这段代码就会监听到我博客上标题元素被修改,导致网站一遍遍的加载,最后的结果可想而知。。。所以说为了避免网站崩溃而又不影响网站美观我们只能退而求其次,只将以下代码复制到你主题的 footer.php 文件中去,或者任何你希望用户禁止查看控制台的页面中即可:
<script type='text/javascript'> //禁用右键(防止右键查看源代码) window.oncontextmenu=function(){return false;} //禁止任何键盘敲击事件(防止F12和shift+ctrl+i调起开发者工具) window.onkeydown = window.onkeyup = window.onkeypress = function () { window.event.returnValue = false; return false; } //如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面 var h = window.innerHeight,w=window.innerWidth; window.onresize = function () { if (h!= window.innerHeight||w!=window.innerWidth){ window.close(); window.location = "about:blank"; } }
</script>
由于代码是 JavaScript 的,也就是说当用户浏览器禁止 JavaScript 的话代码会失效,不过对于提高一些恶意搞事情的难度还是有一定作用的。
js禁止复制页面文字
做项目的时候有客户提出要求,不能用用户浏览他发表的文章时复制他的文章
<script type="text/javascript">window.addEventListener('keydown', function (e) {if(e.keyCode == 83 && (navigator.platform.match('Mac') ? e.metaKey : e.ctrlKey)||e.keyCode == 122||e.keyCode == 123||e.keyCode == 17||e.keyCode == 18){e.preventDefault();window.event.returnValue= false; }if(e.ctrlKey && e.keyCode== 65){e.preventDefault();window.event.returnValue= false; }if(e.ctrlKey && e.keyCode== 67){e.preventDefault();window.event.returnValue= false; }});window.onload=function(){document.oncontextmenu=function(){return false;}}document.oncontextmenu = new Function("event.returnValue=false");document.onselectstart = new Function("event.returnValue=false");
</script>
一种比较简单的方法,禁止用户选中页面的文字和禁止用户右键菜单
1 2 |
|
如果只是禁止部分区域的话,直接在标签上加上onselectstart=“return false”
1 2 3 |
|
或者
1 2 3 4 5 6 7 8 9 10 |
|
在火狐下这种js写法是无效的
在火狐下有个屏蔽选择样式的样式属性 -moz-user-select (只支持火狐浏览器)
1 2 3 |
|
如果要禁止整个页面
1 2 3 4 5 |
|
-moz-user-select主要有三个值 none -moz-all -moz-none
Input表单中文字 | 一般页面文字 | |
none | 不可选 | 不可选 |
-moz-all | 不可选 | 可选 |
-moz-none | 可选 | 不可选 |
JavaScript 实现禁止打开控制台(右键/工具栏/F12/Shift+Ctrl+I)相关推荐
- 简单前端web页面文字防复制 粘贴 剪切 鼠标右键 F12 shift+ctrl+i等,多浏览器支持
简单的实现javaScript层面的文字防复制,只能说防君子不妨小人,有兴趣的人可以试试 <!DOCTYPE html> <html > <head> <me ...
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十一)禁止打开控制台解决方案
目录 Web安全--易班优课YOOC课群在线测试自动答题解决方案 问题描述 考试期间,打开控制台,立即跳转到 https://www.baidu.com/s?wd=别想复制黏贴了,还是好好学习吧 问题 ...
- web端禁止打开控制台
css文件 body {-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none;-khtml-user-selec ...
- JS禁止浏览器打开控制台或查看源代码
分享知识 传递快乐 JS禁止浏览器打开控制台或查看源代码 在做支付的时候为了保证提交参数的安全.以及为了保证重定向时地址不被查看和修改,必须要禁用浏览器的控制台或源码查看功能,以保证参数及地址的安全 ...
- 【前端学习】—网站禁止右键、F12防复制、防查看源代码、防图片下载的方法
[前端学习]-网站禁止右键.F12防复制.防查看源代码.防图片下载的方法 当下浏览器还是很多的,如果你想你的网站内容不被人手工采集的话,你的图片不想被人另存为或下载的话,我们完全可以禁止右键,禁止全站 ...
- 谷歌浏览器检查打开慢,F12键(打开控制台)打开较慢?解决方法
其实很简单,首先打开控制台,打开设置>Preferences>Language , 如下: 然后选择English(US),选择修改,关闭重新打开,然后就好了,就是这么简单.
- ie浏览器里怎么打开控制台
在 Internet Explorer 浏览器中打开控制台的方法如下: 在浏览器中按 F12 键,或者在菜单栏中选择 "开发人员工具". 在弹出的调试窗口中,选择 "控制 ...
- 理解javascript中的在控制台输出方式console.log
大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方.可能大家对co ...
- 如何在网页中禁止使用鼠标右键?几种方法和大家分享
如何在网页中禁止使用鼠标右键 方法一:最简单的方法 <SCRIPT language="JavaScript"> function click() { if(event ...
最新文章
- 图像归一化处理 相同像素_图像处理学习笔记(九)——灰度直方图及其均衡化(理论篇)...
- 研究生 论文写作【要注意的30个禁忌(总体问题、选题方面、摘要方面、研究方法方面、讨论与结果、结论方面)】
- Pythont特殊语法filter,map,reduce,apply
- 如何查找,修复和避免C#.NET中内存泄漏的8个最佳实践
- Python外(5)-for-enumerate()-zip()
- 同步、互斥锁、死锁、异步
- hiredis源码分析与简单封装
- 读书笔记2014第10本:《设计心理学》
- gradle-学习笔记(2)-多项目构建
- 数据库不存在 php报错,在php中需要用到的mysql数据库的简单操作,phpmysql
- vc2005运行库彻底卸载_VC2005运行库-解决方案
- Unity Excel转json且自动生成C#脚本
- MyEclipse连接oracle数据库及代码
- C#创建临时文件夹方法
- “好奇号”的火星发展观
- idata 单片机 新唐_新唐单片机代码评审总结
- mysql zimbra_zimbra的使用与管理
- 解决mvn打包报There are test failures.的问题
- GSEA load files errors
- IDOC 开发 (三)