解決瀏覽器中點擊【Backspace】回退問題

問題:

工作中遇到在瀏覽器空白處,或者不可編輯的input框上,點擊【Backspace】按鍵,出現瀏覽器頁面回退的問題,經過測試,發現谷歌瀏覽器默認屏蔽了這個回退的功能,但IE、360瀏覽器、火狐瀏覽器都沒有,這個功能會導致,特別是後臺系統,session丟失,退回到登錄頁面,嚴重影響用戶體驗。
比如,用戶在進行表單的信息填寫,不經意在瀏覽器空白處點擊了【Backspace】按鍵,退到了登錄界面,想想這是個什麼樣的體驗。

解決方法:

通過js監聽backspace按鍵的按下事件:

1、如果標籤不是input或者textarea則阻止Backspace
2、input標籤除了(TEXT、TEXTAREA、PASSWORD)這些類型,全部阻止Backspace
3、input或者textarea輸入框如果不可編輯則阻止Backspace

function banBackSpace(e) {
		var ev = e || window.event;
		//各種瀏覽器下獲取事件對象
		var obj = ev.relatedTarget || ev.srcElement || ev.target || ev.currentTarget;
		//按下Backspace鍵
		if (ev.keyCode == 8) {
			var tagName = obj.nodeName //標籤名稱
			//如果標籤不是input或者textarea則阻止Backspace
			if (tagName != 'INPUT' && tagName != 'TEXTAREA') {
				return stopIt(ev);
			}
			var tagType = obj.type.toUpperCase();//標籤類型
			//input標籤除了下面幾種類型,全部阻止Backspace
			if (tagName == 'INPUT' && (tagType != 'TEXT' && tagType != 'TEXTAREA' && tagType != 'PASSWORD')) {
				return stopIt(ev);
			}
			//input或者textarea輸入框如果不可編輯則阻止Backspace
			if ((tagName == 'INPUT' || tagName == 'TEXTAREA') && (obj.readOnly == true || obj.disabled == true)) {
				return stopIt(ev);
			}
		}
	}
	function stopIt(ev) {
		if (ev.preventDefault) {
			//preventDefault()方法阻止元素髮生默認的行爲
			ev.preventDefault();
		}
		if (ev.returnValue) {
			//IE瀏覽器下用window.event.returnValue = false;實現阻止元素髮生默認的行爲
			ev.returnValue = false;
		}
		return false;
	}
 
	$(function() {
		//實現對字符碼的截獲,keypress中屏蔽了這些功能按鍵
		document.onkeypress = banBackSpace;
		//對功能按鍵的獲取
		document.onkeydown = banBackSpace;
	})

上述代碼可以放到公共的js中,此處的代碼參照此篇博客:

http://www.cnblogs.com/lujiulong/p/6019638.html

https://blog.csdn.net/csdn_ds/article/details/73337929

在此說明幾點:
1、  IE:有window.event對象
Firefox:沒有window.event對象。可以通過給函數的參數傳遞event對象。如onmousemove=doMouseMove(event)
統一的解決方法:var event = event || window.event;


2、  IE:even對象有srcElement屬性,但是沒有target屬性
Firefox:even對象有target屬性,但是沒有srcElement屬性
解決方法:var obj = event.relatedTarget || event.srcElement || event.target || event.currentTarget;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章