js 禁止查看源文件屏蔽Ctrl+u/s、F12、右鍵等兼容IE火狐chrome


鍵盤事件

一般處理鍵盤按鍵事件我們采用這樣的方式

document.onkeydown=function (event) {
  //檢測按下哪個鍵,作相應處理
};

event為鍵盤事件,對於chrome,firefox,IE(Edge),IE10,IE9均能支持function自帶的e,而ie8以下只能識別windows.event,所以一般兼容寫法為:event=event||window.event。獲取按鍵碼一般是event.keyCode,這個對各大瀏覽器都是兼容的。

document.onkeydown=function (event) {

   event=event||window.event;
   var key=event.keyCode;
   //檢測按下哪個鍵,作相應處理
   if(key==...){
  }   
};

屏蔽瀏覽器默認事件的方法大致有三種:
1)event.preventDefault()
2)event.returnValue=false;
3)return false;

firefox的特殊方式支持是指,firefox這里一個比較坑爹的地方是,firefox需增加一個延遲才能生效,不然仍然會跳出瀏覽器的保存當前頁面窗口,如下:

 

document.onkeydown=function (event) {

//判斷按鍵
var key=event.keyCode;
if (key== 83 && e.ctrlKey){
  /*延遲,兼容FF瀏覽器 */
  setTimeout( function (){
  alert( 'ctrl+s' );
},1);
event.preventDefault(); //或者是 return false; 
}

而IE10,IE9,IE8以下對於event.returnValue=false的特殊方式支持是指鍵盤事件event必須為window.event時ctrl+s的默認事件才能屏蔽,在event=event||window.event的兼容寫法中,IE8及以下的形參event是空,所以會取值為window.event,而IE10,IE9的function形參event是有效的,所以取值直接為event,因此IE10,IE9在寫法為event=event||window.event時會屏蔽ctrl+s失效。

假如要讓所有IE版本能夠屏蔽Ctrl+S,event取值只能是window.event了。由於window.event沒有方法preventDefautl,所以屏蔽默認事件方法只能用return false;

兼容IE、firefox、chrome,屏蔽Ctrl+s的寫法為

document.onkeydown=function (e) {

 e=window.event||e;
 if (key== 83 && e.ctrlKey){
   /*延遲,兼容FF瀏覽器 */
   setTimeout( function (){
   alert( 'www.qdxw.net' );
       },1);
   return false ;  
 } 
};

屏蔽鼠標右鍵的寫法

window.document.oncontextmenu = function (){

    alert( '親,你想干嘛,不要做壞事哦' );
    return false ;
}

如果當前頁面里含有iframe 那么iframe里的右鍵依然可用

屏蔽頁面里iframe里的右鍵寫法

 

document.getElementById('web').onload = function(){

   window.document.getElementById( 'web' ).contentWindow.document.oncontextmenu = function (){
     alert( 'www.qdxw.net' );
     return false ;
     }
}
 
web是iframe標簽的ID屬性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM