js禁用回退鍵[backspace鍵]瀏覽歷史跳轉(zhuǎn)的解決辦法

轉(zhuǎn)自:### js禁用回退鍵[backspace鍵]瀏覽歷史跳轉(zhuǎn)的解決辦法

解決辦法:

第一直覺(jué)就是上網(wǎng)搜答案,但是結(jié)果不理想。

第二上論壇上看看有沒(méi)有解決辦法,到是找到一個(gè)類似的問(wèn)你

‘在IE里按backspace鍵時(shí)如何知道是發(fā)生在input還是在中文輸入法框?’

地址:http://www.iteye.com/problems/3272

問(wèn)題類似,但是不是解決辦法,還好的就是我根據(jù)他的思路自己試著找解決辦法。

多謝fuwang

下面是我代碼:

Javascript代碼

1.  window.onload=function(){  
2.  /**************************** 
3.  * 作者:q821424508@sina.com   * 
4.  * 時(shí)間:2012-07-12            * 
5.  * version:1.0              * 
6.  *                          * 
7.  ****************************/  
8.  document.getElementsByTagName("body")[0].onkeydown =function(){  
9.  if(event.keyCode==8){  
10.  var elem = event.srcElement;  
11.  var name = elem.nodeName;  

13.  if(name!='INPUT' && name!='TEXTAREA'){  
14.  event.returnValue = false ;  
15.  return ;  
16.  }  
17.  var type_e = elem.type.toUpperCase();  
18.  if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' && type_e!='PASSWORD' && type_e!='FILE')){  
19.  event.returnValue = false ;  
20.  return ;  
21.  }  
22.  if(name=='INPUT' && (elem.readOnly==true || elem.disabled ==true)){  
23.  event.returnValue = false ;  
24.  return ;  
25.  }  
26.  }  
27.  }  
28.  }  

問(wèn)題解決了,

使用說(shuō)明:

1.把代碼直接復(fù)制到頁(yè)面,【頁(yè)面必須含有body標(biāo)簽】

2.放到任意一個(gè)頁(yè)面引用的js文件中【直接放到文件的最開(kāi)始,或最后,不要放到方法里面,頁(yè)面必須含有body標(biāo)簽】

以上為1.0版本,只支持IE:

-------------------------------------------------------分割線------------------------------------------------------------

以下為2.0版本,支持IE,firefox,chrome[這三款瀏覽器經(jīng)過(guò)測(cè)試]等瀏覽器

[圖片上傳失敗...(image-15568f-1557717300381)]

(又修復(fù)了個(gè)不大不小的bug,現(xiàn)在是2.1)

Js代碼

1.  window.onload=function(){  
2.  /**************************** 
3.  * 作者:q821424508@sina.com   * 
4.  * 時(shí)間:2012-08-20            * 
5.  * version:2.1              * 
6.  *                          * 
7.  ****************************/  
8.  document.getElementsByTagName("body")[0].onkeydown =function(){  

10.  //獲取事件對(duì)象  
11.  var elem = event.relatedTarget || event.srcElement || event.target ||event.currentTarget;   

13.  if(event.keyCode==8){//判斷按鍵為backSpace鍵  

15.  //獲取按鍵按下時(shí)光標(biāo)做指向的element  
16.  var elem = event.srcElement || event.currentTarget;   

18.  //判斷是否需要阻止按下鍵盤的事件默認(rèn)傳遞  
19.  var name = elem.nodeName;  

21.  if(name!='INPUT' && name!='TEXTAREA'){  
22.  return _stopIt(event);  
23.  }  
24.  var type_e = elem.type.toUpperCase();  
25.  if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' && type_e!='PASSWORD' && type_e!='FILE')){  
26.  return _stopIt(event);  
27.  }  
28.  if(name=='INPUT' && (elem.readOnly==true || elem.disabled ==true)){  
29.  return _stopIt(event);  
30.  }  
31.  }  
32.  }  
33.  }  
34.  function _stopIt(e){  
35.  if(e.returnValue){  
36.  e.returnValue = false ;  
37.  }  
38.  if(e.preventDefault ){  
39.  e.preventDefault();  
40.  }                 

42.  return false;  
43.  }  

歡迎拍磚。

歡迎在自己的項(xiàng)目中使用,復(fù)制,傳播,都可以,不過(guò)請(qǐng)注明出處。


版本升級(jí):

當(dāng)前版本 2.1

修復(fù)firefox下無(wú)法刪除input里面字符的bug

說(shuō)明:

不知道為毛,在firefox下出現(xiàn)問(wèn)題了,之前確定測(cè)試過(guò),然后有一個(gè)童鞋說(shuō)這個(gè)腳本在firefox下不能用,會(huì)出現(xiàn)上面所說(shuō)現(xiàn)象,我說(shuō)我調(diào)試下,但是后來(lái)他說(shuō)又可以了,

不過(guò)經(jīng)過(guò)我的測(cè)試這段腳本確實(shí)有問(wèn)題,

確實(shí)會(huì)出現(xiàn)上述問(wèn)題,不過(guò)是時(shí)有時(shí)無(wú)。

算了還是改一下吧,

出現(xiàn)問(wèn)題的原因:

firefox下 var elem = event.relatedTarget || event.srcElement 無(wú)法獲取到目標(biāo)對(duì)象。

所以換成target屬性來(lái)獲取。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 往往,最能感知?dú)q月如白駒過(guò)隙,就是深秋的這個(gè)時(shí)候了。這種深置田野“青山隱,白霧濃,日暮殤”的畫(huà)面在視線里年復(fù)著一...
    彎月彎閱讀 387評(píng)論 0 0

友情鏈接更多精彩內(nèi)容