1. 程式人生 > >js學習小結(十四)2014.5.23(keyboard事件,mouseEvent事件event的相關屬性,ie事件註冊的N中方式)

js學習小結(十四)2014.5.23(keyboard事件,mouseEvent事件event的相關屬性,ie事件註冊的N中方式)

1.keyboard事件

   主要有三個事件:keydown,keyup,keypress。

如果三個事件都註冊了,那麼一般的觸發順序是keydown--> keypress---> keyup。

   keypress:只有當在文字框裡輸入字元(包括數字、英文字母,回車符,各種符號)時會觸發,如果採用中文輸入法輸入中文時,不會觸發keypress事件。可以通過charCode獲取按下鍵的ASCII值。



   keydown和keyup:這是一對事件,無論按下什麼鍵(無論是字元還是非字元)都會觸發該這對事件。通過keyCode,會返回按下鍵的對應的大寫字母的ASCII值。

注意:keydown和keypress都是在文字框內容變化之前觸發的,而keyup是在文字框內容變化之後觸發的。

<body>
<textarea id='tt' cols='20' rows='20'></textarea>
<input  type='text' id='text'/>
<script type="text/javascript" src='../js/JSEvent.js'></script>
<script type="text/javascript">
	var tt=document.getElementById('tt');
	EventUtil.addEventHandler(tt,'keyup',function(e){
		e=EventUtil.getEvent(e);
		//console.log(EventUtil.getCharCode(e));
		console.log("keyup is triggered:"+e.keyCode+"  " +String.fromCharCode(e.keyCode));
	});
	EventUtil.addEventHandler(tt,'keydown',function(e){
		e=EventUtil.getEvent(e);
		//console.log(EventUtil.getCharCode(e));
		console.log("keydown is triggered:"+e.keyCode+"  " +String.fromCharCode(e.keyCode));
	});
	EventUtil.addEventHandler(tt,'keypress',function(e){
		e=EventUtil.getEvent(e);
		//console.log(EventUtil.getCharCode(e));
console.log("keypress is triggered:"+EventUtil.getCharCode(e)+"  " +String.fromCharCode(EventUtil.getCharCode(e)));
	});
   

</script>
</body>


2.mouseEvent事件

(1)對於mouseover和mouseout事件,標準DOM中可以通過relatedTarge屬性獲取相關元素,IE中,可以通過fromElement toElement獲取相關元素。

(2)對於mouse的click事件可以通過button屬性,獲得使用滑鼠點選時,是點選了滑鼠左鍵還是右鍵還是中間的鍵。在標準DOM中,通過event的button屬性,獲取點選鍵的資訊,event.button=0,表示按了滑鼠左鍵,event.button=1,表示按下了滑鼠右鍵,event.button=2,表示按下了中間鍵。在ie中,這個值返回得更加複雜,但是使用標準MouseEvent完全夠了。所以使用了一下方法封裝:

getButton:function(e){
		if(document.implementation.hasFeature('MouseEvents','2.0')){
			return event.button;
		}else{
			switch(event.button){
				case 0:
				case 1:
				case 3:
				case 5:
				case 7:
				    return 0;
				case 2:
				case 6:
					return 2;
				case 4:
				    return 1;
			}
		}
	}

(3)對於滑鼠的滾輪事件,特別的是opera低版本中的表示的scroll