1. 程式人生 > 遊戲 >無限可能!《沉浮》搶先體驗版首周銷量破萬!

無限可能!《沉浮》搶先體驗版首周銷量破萬!

事件是JavaScript與網頁之間互動的橋樑,當事件觸發後,可執行相應的JS程式碼執行相關操作。如,點選後翻頁、滑鼠拖動對話方塊、選中內容後彈出分享等等。

快速入門

事件是一種可被JavaScript偵測到的行為,包括頁面載入、滑鼠單擊、滑過到某區域等。當JS偵測到這些行為,就會觸發相應事件,之後我們再去“填空”完成想要執行的業務程式碼即可,完美的實現互動事件的處理。 在實現開發過程編寫程式碼時,也並不是所有事件我們都需要用到的,我們應該根據專案需求,來繫結、監聽我們所需要用到的事件即可。

事件繫結

JavaScript提供了3種繫結方式,分別為內聯繫結、動態繫結和事件監聽。

行內繫結

也有地方稱內聯繫結(一個東西,不用糾結),行內繫結是通過HTML標籤屬性設定實現的,如下:

<body>
	<button onclick="console.log('wow')">點我</button>
</body>

和JS檔案的行內引用同一概念,也是不推薦使用的

動態繫結

行內繫結是在HTML中通過設定標籤屬性方式直接行內處理的,動態繫結則解決了“分離”問題。在JS程式碼中,先獲取到需要操作的DOM元素物件,再給其新增事件即可,如下:
html程式碼:

<body>
	<button id="btn_click">點我</button>
</body>

JavaScript程式碼:

var btn_click = document.getElementById('btn_click');
btn_click.onclick = function(){
	alert("頂!");
}

事件監聽

為了能給同一個DOM物件,新增多個事件處理的程式,事件監聽概念出現,如下:

<body>
	<button id="btn_click">點我</button>

	<script type="text/javascript">
		var btn_click = document.getElementById('btn_click');
		// 新增事件監聽
		btn_click.addEventListener('click',function(){
			alert("1頂!");
		});
		// 新增事件監聽
		btn_click.addEventListener('click',function(){
			alert("2頂!");
		});
	</script>
</body>

事件監聽的處理程式一般是採用 callback(回撥函式) 的方式(如上)。如果採用的非匿名的有名函式,一般在使用完後,可移除事件監聽。

DOM物件.removeEventListener(type, callback);

早期版本瀏覽器(IE6~8)事件監聽語法是 :

DOM物件.attachEvent(type, callback); // 新增
DOM物件.detachEvent(type, callback); // 移除

事件物件

事件型別

頁面事件

頁面事件多用於頁面完成載入後,需即時執行的程式碼處理,如下:

事件名稱 觸發時機
load 當頁面載入完畢後觸發
unload 當頁面關閉時觸發
<script type="text/javascript">
	window.onload = function(){
		// 頁面加在完成後,需執行的JS程式碼
	}
	window.onunload = function(){
		// 頁面關閉後,需執行的JS程式碼,一般是資源回收處理
	}
</script>

焦點事件

焦點事件多用於表單驗證功能,是常用事件之一。如文字框獲取焦點後改變樣式,文字框失去焦點後及時驗證文字框內資料等操作。如下:

事件名稱 觸發時機
focus 當獲得焦點時觸發
blur 當失去時觸發

程式碼使用同頁面事件同理,不做贅述

滑鼠事件

滑鼠事件應該是開發中最常見的一類事件了,如滑鼠點選、滑過、拖拽等。

事件名稱 觸發時機
click 當按下並釋放滑鼠按鍵時觸發
dblclick 當滑鼠雙擊時觸發
mouseover 當滑鼠進入時觸發
mouseout 當滑鼠離開時觸發
change 當內容發生改變時時觸發,一般更多用於 select 物件

滑鼠事件還有部分,如mousedown,mouseup,mousemove,mouseenter,mouseleave,mousewheel等等,要用時查一查即可。

鍵盤事件

當用戶使用鍵盤進行操作時會觸發相應的鍵盤事件,利用鍵盤事件可以實現一些常用的功能,如監聽Enter按鍵進行表單的提交,監聽Esc按鍵關閉展開的選單等等,事件如下:

事件名稱 觸發時機
keydown 當按鍵按下時觸發,長按觸發多次
keyup 當釋放按鍵彈起時觸發
keypress 當按下按鍵時觸發(Shift、CapsLock等非字元鍵除外)

表單事件

表單事件是指對WEB表單操作時發生的事件,如表單提交前對錶單資料驗證等操作,如下:

事件名稱 觸發時機
submit 當表單提交時觸發
reset 當表單重置時觸發

關於事件流

關於事件優化