轉(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)獲取。