【实测】JavaScript实现禁止右键查看源码、查看元素打开控制台(右键/工具栏/F12/Shift+Ctrl+I)-Discuz教程下载

【实测】JavaScript实现禁止右键查看源码、查看元素打开控制台(右键/工具栏/F12/Shift+Ctrl+I)

开通本站Svip会员,全站资源免费下
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.     <title></title>
  6.     <style type="text/CSS">
  7.     /*禁止选中文字*/
  8.     body{
  9.         -moz-user-select: none; /*火狐*/
  10.         -webkit-user-select: none; /*webkit浏览器*/
  11.         -ms-user-select: none; /*IE10*/
  12.         -khtml-user-select: none; /*早期浏览器*/
  13.         user-select: none;
  14.     }
  15.     </style>  
  16. </head>
  17.   
  18. <body>
  19.     <p>Test</p>
  20. <script type='text/javascript'>
  21.     //禁用右键(防止右键查看源代码)
  22.     window.oncontextmenu=function(){return false;}
  23.     //禁止任何键盘敲击事件(防止F12和shift+ctrl+i调起开发者工具
  24.     window.onkeydown = window.onkeyup = window.onkeypress = function () {
  25.         window.event.returnValue = false;
  26.         return false;
  27.     }
  28.     //如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面
  29.     var h = window.innerHeight,w=window.innerWidth;
  30.     window.onresize = function () {
  31.         if (h!= window.innerHeight||w!=window.innerWidth){
  32.             window.close();
  33.             window.location = "about:blank";
  34.         }
  35.     }
  36.     /*好吧,你的开发者工具是单独的窗口显示,不会改变原来网页的高度和宽度, 但是你只要修改页面元素我就重新加载一次数据,让你无法修改页面元素(不支持IE9以下浏览器)*/
  37.     if(window.addEventListener){
  38.         window.addEventListener("DOMCharacterDataModified", function(){window.location.reload();}, true);
  39.         window.addEventListener("DOMAttributeNameChanged", function(){window.location.reload();}, true);
  40.         window.addEventListener("DOMCharacterDataModified", function(){window.location.reload();}, true);
  41.         window.addEventListener("DOMElementNameChanged", function(){window.location.reload();}, true);
  42.         window.addEventListener("DOMNodeInserted", function(){window.location.reload();}, true);
  43.         window.addEventListener("DOMNodeInsertedIntoDocument", function(){window.location.reload();}, true);
  44.         window.addEventListener("DOMNodeRemoved", function(){window.location.reload();}, true);
  45.         window.addEventListener("DOMNodeRemovedFromDocument", function(){window.location.reload();}, true);
  46.         window.addEventListener("DOMSubtreeModified", function(){window.location.reload();}, true);
  47.     }
  48. </script>
  49. </body>
  50. </html>
复制代码
代码本身应该说没有什么问题,但是后面“通过监听页面元素变化来重新加载页面”的代码对于一些页面上有太多效果的网站获取会导致你的网站崩溃,比如我博客上因为设置了标题滚动(具体请看这篇文章:JavaScript 实现网站标题自定义、滚动、闪烁),这段代码就会监听到我博客上标题元素被修改,导致网站一遍遍的加载,最后的结果可想而知。。。所以说为了避免网站崩溃而又不影响网站美观我们只能退而求其次,只将以下代码复制到你主题的 footer.php 文件中去,或者任何你希望用户禁止查看控制台的页面中即可:
  1. [code]<script type='text/javascript'>
  2.         //禁用右键(防止右键查看源代码)
  3.         window.oncontextmenu=function(){return false;}
  4.         //禁止任何键盘敲击事件(防止F12和shift+ctrl+i调起开发者工具)
  5.         window.onkeydown = window.onkeyup = window.onkeypress = function () {
  6.         window.event.returnValue = false;
  7.                 return false;
  8.         }
  9.                 //如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面
  10.                 var h = window.innerHeight,w=window.innerWidth;
  11.                 window.onresize = function () {
  12.                 if (h!= window.innerHeight||w!=window.innerWidth){
  13.                         window.close();
  14.                         window.location = "about:blank";
  15.                 }
  16.         }
  17. </script>  
复制代码
亲爱的游客您好,请 登录 后进行 回复
由于代码是 JavaScript 的,也就是说当用户浏览器禁止 JavaScript 的话代码会失效,不过对于提高一些恶意搞事情的难度还是有一定作用的。

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部