無限可能!《沉浮》搶先體驗版首周銷量破萬!
事件是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 | 當表單重置時觸發 |