JavaScript - Window/Document Events
您好,有志於编程的同学们!今天,我們將要深入探索JavaScript事件的精彩世界,特別聚焦於Window和Document事件。作為您親切友善的鄰居計算機老師,我在這裡將通過大量的範例和解釋來引導你們開展這次旅程。所以,拿起你們最喜歡的飲料,放鬆一下,我們開始吧!
Window Events
Window事件是與瀏覽器窗口本身相關的動作。這些事件對於創建動態和響應迅速的網頁應用程序非常有用。讓我們探討一些最常見的window事件:
1. load
load
事件在整個頁面(包括所有依赖資源,如樣式表和圖像)完成加載時觸發。這通常用於確保在運行腳本之前所有元素都可用。
window.addEventListener('load', function() {
console.log("頁面已完全加載!");
});
在這個例子中,我們正在為window對象添加一個事件監聽器。當'load'事件發生時,我們的函數將運行,將消息記錄到控制台。
2. resize
resize
事件在瀏覽器窗口調整大小时觸發。這可以用於調整佈局或重新計算尺寸。
window.addEventListener('resize', function() {
console.log("窗口調整為: " + window.innerWidth + "x" + window.innerHeight);
});
在這裡,我們在窗口調整大小时記錄窗口的新尺寸。這對於響應式設計調整非常有用。
3. scroll
scroll
事件在用戶在窗口中滾動時觸發。這可以用於實現無窮滾動或基於滾動位置顯示/隱藏元素。
window.addEventListener('scroll', function() {
let scrollPosition = window.scrollY;
console.log("滾動到位置: " + scrollPosition);
if (scrollPosition > 300) {
document.getElementById('backToTop').style.display = 'block';
} else {
document.getElementById('backToTop').style.display = 'none';
}
});
在這個例子中,當用戶向下滾動超過300像素時,我們顯示一個'返回頂部'按鈕。
4. unload
unload
事件在用戶導航離開頁面時觸發。這可以用於清理任務或離開前提示用戶。
window.addEventListener('unload', function(event) {
event.preventDefault();
event.returnValue = '';
});
這段代碼將在用戶嘗試離開頁面時彈出一個確認對話框。記住要謹慎使用,因為這可能會讓用戶感到煩躁!
Document Events
Document事件與HTML文檔本身相關。這些事件讓我們能以各種方式與頁面內容互動。讓我們看看一些關鍵的document事件:
1. DOMContentLoaded
DOMContentLoaded
事件在初始HTML文檔已經完全加載和解析,但不等待外部資源完成加載時觸發。
document.addEventListener('DOMContentLoaded', function() {
console.log("DOM已準備好!");
document.getElementById('myButton').addEventListener('click', function() {
alert("按鈕已點擊!");
});
});
這個事件通常比window.load
更受偏好,因為它不等待圖像和其他資源完成加載,從而允許更快地執行腳本。
2. click
click
事件在元素被點擊時觸發。這是您將會遇到的最常見事件之一。
document.getElementById('myButton').addEventListener('click', function(event) {
console.log("按鈕在坐標點擊: " + event.clientX + ", " + event.clientY);
event.target.style.backgroundColor = 'red';
});
在這個例子中,我們記錄點擊的坐標並在點擊按鈕時更改按鈕的顏色。
3. keydown 和 keyup
這些事件在按鍵被按下(keydown
)或釋放(keyup
)時觸發。
document.addEventListener('keydown', function(event) {
console.log("按鍵被按下: " + event.key);
if (event.key === 'Enter') {
document.getElementById('submitButton').click();
}
});
這段代碼記錄每次按鍵並在按Enter鍵時模擬點擊提交按鈕。
4. mouseover 和 mouseout
這些事件在鼠標指針進入(mouseover
)或離開(mouseout
)元素時觸發。
let hoverElement = document.getElementById('hoverMe');
hoverElement.addEventListener('mouseover', function() {
this.style.backgroundColor = 'yellow';
});
hoverElement.addEventListener('mouseout', function() {
this.style.backgroundColor = '';
});
這創造了一個簡單的懸停效果,當鼠標悬停在元素上時更改背景色。
事件方法表
這裡是一個方便的表格,總結了我們討論過的方法:
事件 | 描述 | 範例 |
---|---|---|
load | 在頁面完全加載時觸發 | window.addEventListener('load', function() {...}) |
resize | 在窗口調整大小时觸發 | window.addEventListener('resize', function() {...}) |
scroll | 在窗口滾動時觸發 | window.addEventListener('scroll', function() {...}) |
unload | 在導航離開頁面時觸發 | window.addEventListener('unload', function(event) {...}) |
DOMContentLoaded | 在DOM準備好時觸發 | document.addEventListener('DOMContentLoaded', function() {...}) |
click | 在元素被點擊時觸發 | element.addEventListener('click', function(event) {...}) |
keydown | 在按鍵被按下時觸發 | document.addEventListener('keydown', function(event) {...}) |
keyup | 在按鍵被釋放時觸發 | document.addEventListener('keyup', function(event) {...}) |
mouseover | 在鼠標指針進入元素時觸發 | element.addEventListener('mouseover', function() {...}) |
mouseout | 在鼠標指針離開元素時觸發 | element.addEventListener('mouseout', function() {...}) |
好了,各位!我們已經涵蓋了JavaScript中Window和Document事件的基本知識。記住,實踐出真知,所以不要害怕在您自己的項目中嘗試這些事件。在您知道之前,您將會像專業人士一樣創建有互動性和動態性的網頁!
快樂編程,願您的事件總是按預期觸發!
Credits: Image by storyset