window.onload=function(){ /**************************** * 作者:q821424508@sina.com * * 時間:2012-08-20 * * version:2.1 * * * ****************************/ document.getElementsByTagName("body")[0].onkeydown =function(){ //獲取事件對象 var elem = event.relatedTarget || event.srcElement || event.target ||event.currentTarget; if(event.keyCode==8){//判斷按鍵為backSpace鍵 //獲取按鍵按下時光標做指向的element var elem = event.srcElement || event.currentTarget; //判斷是否需要阻止按下鍵盤的事件默認傳遞 var name = elem.nodeName; if(name!='INPUT' && name!='TEXTAREA'){ return _stopIt(event); } var type_e = elem.type.toUpperCase(); if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' && type_e!='PASSWORD' && type_e!='FILE')){ return _stopIt(event); } if(name=='INPUT' && (elem.readOnly==true || elem.disabled ==true)){ return _stopIt(event); } } } } function _stopIt(e){ if(e.returnValue){ e.returnValue = false ; } if(e.preventDefault ){ e.preventDefault(); } return false; }
其中有一個就是在頁面非輸入框中按下回退鍵[backspace鍵]時頁面會跳轉到上一頁,但是上一頁加載失敗,說會話已過期,
問題描述到此結束.
解決辦法:
第一直覺就是上網搜答案,但是結果不理想。
第二上論壇上看看有沒有解決辦法,到是找到一個類似的問你
‘在IE里按backspace鍵時如何知道是發生在input還是在中文輸入法框?’
地址:http://www.iteye.com/problems/3272
問題類似,但是不是解決辦法,還好的就是我根據他的思路自己試着找解決辦法。
版本升級:
當前版本 2.1
修復firefox下無法刪除input里面字符的bug
說明:
不知道為毛,在firefox下出現問題了,之前確定測試過,然后有一個童鞋說這個腳本在firefox下不能用,會出現上面所說現象,我說我調試下,但是后來他說又可以了,
不過經過我的測試這段腳本確實有問題,
確實會出現上述問題,不過是時有時無。
算了還是改一下吧,
出現問題的原因:
firefox下 var elem = event.relatedTarget || event.srcElement 無法獲取到目標對象。
所以換成target屬性來獲取。