轉(zhuǎn)自:### js禁用回退鍵[backspace鍵]瀏覽歷史跳轉(zhuǎn)的解決辦法
解決辦法:
第一直覺就是上網(wǎng)搜答案,但是結(jié)果不理想。
第二上論壇上看看有沒有解決辦法,到是找到一個類似的問你
‘在IE里按backspace鍵時如何知道是發(fā)生在input還是在中文輸入法框?’
地址:http://www.iteye.com/problems/3272
問題類似,但是不是解決辦法,還好的就是我根據(jù)他的思路自己試著找解決辦法。
多謝fuwang
下面是我代碼:
Javascript代碼
1. window.onload=function(){
2. /****************************
3. * 作者:q821424508@sina.com *
4. * 時間: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. }
問題解決了,
使用說明:
1.把代碼直接復制到頁面,【頁面必須含有body標簽】
2.放到任意一個頁面引用的js文件中【直接放到文件的最開始,或最后,不要放到方法里面,頁面必須含有body標簽】
以上為1.0版本,只支持IE:
-------------------------------------------------------分割線------------------------------------------------------------
以下為2.0版本,支持IE,firefox,chrome[這三款瀏覽器經(jīng)過測試]等瀏覽器
[圖片上傳失敗...(image-15568f-1557717300381)]
(又修復了個不大不小的bug,現(xiàn)在是2.1)
Js代碼
1. window.onload=function(){
2. /****************************
3. * 作者:q821424508@sina.com *
4. * 時間:2012-08-20 *
5. * version:2.1 *
6. * *
7. ****************************/
8. document.getElementsByTagName("body")[0].onkeydown =function(){
10. //獲取事件對象
11. var elem = event.relatedTarget || event.srcElement || event.target ||event.currentTarget;
13. if(event.keyCode==8){//判斷按鍵為backSpace鍵
15. //獲取按鍵按下時光標做指向的element
16. var elem = event.srcElement || event.currentTarget;
18. //判斷是否需要阻止按下鍵盤的事件默認傳遞
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. }
歡迎拍磚。
歡迎在自己的項目中使用,復制,傳播,都可以,不過請注明出處。
版本升級:
當前版本 2.1
修復firefox下無法刪除input里面字符的bug
說明:
不知道為毛,在firefox下出現(xiàn)問題了,之前確定測試過,然后有一個童鞋說這個腳本在firefox下不能用,會出現(xiàn)上面所說現(xiàn)象,我說我調(diào)試下,但是后來他說又可以了,
不過經(jīng)過我的測試這段腳本確實有問題,
確實會出現(xiàn)上述問題,不過是時有時無。
算了還是改一下吧,
出現(xiàn)問題的原因:
firefox下 var elem = event.relatedTarget || event.srcElement 無法獲取到目標對象。
所以換成target屬性來獲取。