JavaScript事件監聽器——讓網頁更加動態
在JavaScript中,事件監聽器是非常常用的一種語法。作為一種實現響應式交互的方式,事件監聽器可以很方便地對各種不同的用戶交互事件進行處理。比如,當用戶鼠標移動到某個圖片上時,就可以將圖片提供的介紹文本顯示出來。舉個例子:
<img src="img/photo.jpg" id="image" />
document.getElementById("image").addEventListener('mouseover', function() {
alert('這是一張美麗的風景照!');
});
上述代碼通過addEventListener方法監聽了‘mouseover’事件,當用戶將鼠標移動到圖片上時,alert方法便會被執行,彈出一個提示框。
除了常用的鼠標事件,事件監聽器還包括了鍵盤事件、窗口事件、表單事件等多種類型,不同事件對應不同的監聽器。比如在頁面加載完成后執行一些任務,可以使用如下代碼:
window.onload = function() {
//do something
};
上述代碼會在整個頁面加載完成后,自動執行其中的函數。如果使用addEventListener監聽load事件,則需要在函數中加入綁定事件的代碼:
window.addEventListener('load', function() {
//do something
});
事件監聽器還可以方便地進行事件傳遞,比如在一個復雜的按鈕組里,每個按鈕都有不同的功能。我們可以為每個按鈕單獨添加事件監聽器,同時在事件處理函數內進行事件傳遞,判斷當前點擊的按鈕,并執行相應的操作:
var buttons = document.querySelectorAll('.button');
for (var i =0; i<buttons.length; i++) {
buttons[i].addEventListener('click', function(event) {
var buttonType = event.target.getAttribute('data-type');
switch(buttonType) {
case 'save':
//save function
break;
case 'refresh':
//refresh function
break;
//......
}
});
}
最后需要強調的是,事件監聽器的實現必須注意瀏覽器兼容性問題。現代瀏覽器大多已經支持了HTML5新事件,但是舊的瀏覽器版本則可能無法使用addEventListener方法。為了保證兼容性,通常使用attachEvent方法代替addEventListener方法。如下所示:
if (document.addEventListener) {
//now use addEventListener() method
element.addEventListener('click', someFunc);
} else if (document.attachEvent) {
//now use attachEvent() method
element.attachEvent('onclick', someFunc);
}
JavaScript事件監聽器能夠方便地實現網頁的動態特效,但同時也需要注意瀏覽器兼容性問題,以保證其正確的使用。
下一篇div上畫線