人生就是不斷學習,調整與更新持續前進。
回上一頁

關監聽技巧的java script的應用v1

這是一個基礎使用JS監聽的應用,

目的是因應在各需求中延伸使用的思考。

 



Java Script:


  // 當整個DOM內容載入完成後執行
document.addEventListener('DOMContentLoaded', function() {
    // 獲取需要監聽的元素
    const loginForm = document.getElementById('loginForm');
    const userInput = document.getElementById('username');
    const submitBtn = document.getElementById('submitBtn');
    const themeToggle = document.getElementById('themeToggle');
    
    // 表單提交監聽
    loginForm.addEventListener('submit', function(event) {
        event.preventDefault();
        console.log('表單提交');
        validateForm();
    });

    // 輸入框值變化監聽
    userInput.addEventListener('input', function(event) {
        const value = event.target.value;
        console.log('輸入值:', value);
        // 即時驗證使用者輸入
        if (value.length < 3) {
            userInput.classList.add('invalid');
        } else {
            userInput.classList.remove('invalid');
        }
    });

    // 按鈕點擊監聽
    let clickCount = 0;
    submitBtn.addEventListener('click', function(event) {
        clickCount++;
        console.log(`按鈕被點擊了 ${clickCount} 次`);
    });

    // 按鍵監聽
    document.addEventListener('keydown', function(event) {
        // 監聽特定快捷鍵
        if (event.ctrlKey && event.key === 's') {
            event.preventDefault();
            console.log('觸發保存快捷鍵');
            saveData();
        }
    });

    // 滑鼠移動監聽
    let throttleTimer;
    document.addEventListener('mousemove', function(event) {
        // 使用節流(throttle)技術來優化性能
        if (!throttleTimer) {
            throttleTimer = setTimeout(function() {
                console.log(`滑鼠位置 - X: ${event.clientX}, Y: ${event.clientY}`);
                throttleTimer = null;
            }, 100);
        }
    });

    // 自定義事件監聽
    const customEvent = new CustomEvent('themeChange', {
        detail: { theme: 'dark' }
    });

    themeToggle.addEventListener('themeChange', function(event) {
        console.log(`主題切換為: ${event.detail.theme}`);
        document.body.classList.toggle('dark-theme');
    });

    // 模擬觸發自定義事件
    themeToggle.dispatchEvent(customEvent);

    // 輔助函數
    function validateForm() {
        // 表單驗證邏輯
        console.log('執行表單驗證');
    }

    function saveData() {
        // 保存數據邏輯
        console.log('執行數據保存');
    }
});

// 監聽網頁生命週期事件
window.addEventListener('load', function() {
    console.log('頁面完全載入完成');
});

window.addEventListener('beforeunload', function(event) {
    // 在用戶離開頁面前提醒
    event.preventDefault();
    event.returnValue = '';
});