web 頁面阻止用戶F12篡改頁面元素和數據

web 頁面阻止用戶F12篡改頁面元素和數據

Js代碼  收藏代碼
  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.   
  17. </head>  
  18.   
  19. <body>  
  20.   
  21.   
  22. <p>Test</p>  
  23. <script type='text/javascript'>  
  24. //這段js要放在頁面最下方  
  25. var h = window.innerHeight,w=window.innerWidth;  
  26. //禁用右鍵 (防止右鍵查看源代碼)  
  27. window.οncοntextmenu=function(){return false;}  
  28. //在本網頁的任何鍵盤敲擊事件都是無效操作 (防止F12和shift+ctrl+i調起開發者工具)  
  29. window.onkeydown = window.onkeyup = window.onkeypress = function () {  
  30.     window.event.returnValue = false;  
  31.     return false;  
  32. }  
  33. //如果用戶在工具欄調起開發者工具,那麼判斷瀏覽器的可視高度和可視寬度是否有改變,如有改變則關閉本頁面  
  34. window.onresize = function () {  
  35.     if (h != window.innerHeight||w!=window.innerWidth){  
  36.         window.close();  
  37.         window.location = "about:blank";  
  38.     }  
  39. }  
  40. /*好吧,你的開發者工具是單獨的窗口顯示,不會改變原來網頁的高度和寬度, 
  41. 但是你只要修改頁面元素我就重新加載一次數據,讓你無法修改頁面元素(不支持IE9以下瀏覽器)*/  
  42. if(window.addEventListener){  
  43. window.addEventListener("DOMCharacterDataModified"function(){window.location.reload();}, true);  
  44. window.addEventListener("DOMAttributeNameChanged"function(){window.location.reload();}, true);  
  45. window.addEventListener("DOMCharacterDataModified"function(){window.location.reload();}, true);  
  46. window.addEventListener("DOMElementNameChanged"function(){window.location.reload();}, true);  
  47. window.addEventListener("DOMNodeInserted"function(){window.location.reload();}, true);  
  48. window.addEventListener("DOMNodeInsertedIntoDocument"function(){window.location.reload();}, true);  
  49. window.addEventListener("DOMNodeRemoved"function(){window.location.reload();}, true);  
  50. window.addEventListener("DOMNodeRemovedFromDocument"function(){window.location.reload();}, true);  
  51. window.addEventListener("DOMSubtreeModified"function(){window.location.reload();}, true);  
  52. }  
  53.    
  54. //壓縮後的代碼  
  55. //var h=window.innerHeight,w=window.innerWidth;window.οncοntextmenu=function(){return!1},window.οnkeydοwn=window.οnkeyup=window.οnkeypress=function(){return window.event.returnValue=!1,!1},window.οnresize=function(){(h!=window.innerHeight||w!=window.innerWidth)&&(window.close(),window.location="about:blank")},window.addEventListener&&(window.addEventListener("DOMCharacterDataModified",function(){window.location.reload()},!0),window.addEventListener("DOMAttributeNameChanged",function(){window.location.reload()},!0),window.addEventListener("DOMCharacterDataModified",function(){window.location.reload()},!0),window.addEventListener("DOMElementNameChanged",function(){window.location.reload()},!0),window.addEventListener("DOMNodeInserted",function(){window.location.reload()},!0),window.addEventListener("DOMNodeInsertedIntoDocument",function(){window.location.reload()},!0),window.addEventListener("DOMNodeRemoved",function(){window.location.reload()},!0),window.addEventListener("DOMNodeRemovedFromDocument",function(){window.location.reload()},!0),window.addEventListener("DOMSubtreeModified",function(){window.location.reload()},!0))  
  56.   
  57. </script>  
  58. </body>  
  59. </html>  

    不完美的地方在於不支持IE9以下瀏覽器,還有就是隻適用於展示數據,如果和用戶有交互的頁面使用不了,因爲用戶每次修改數據都會導致重新加載頁面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章