当前位置: 首页 > news >正文

HTML之addEventListener示例

HTML之addEventListener示例

DOM 事件

DOMContentLoaded: 在初始的 HTML 文档被完全加载和解析完成后触发(不等待样式表、图片等)。
load: 在页面完全加载后触发(包括所有依赖的资源,如样式表和图片)。
beforeunload 和 unload: 在页面即将被卸载前和卸载时触发。
`document.addEventListener('DOMContentLoaded', function() {
console.log('DOM fully loaded and parsed');
});

window.addEventListener('load', function() {
console.log('Page fully loaded');
});

window.addEventListener('beforeunload', function(event) {
// 处理即将卸载页面的情况
event.preventDefault();
event.returnValue = ''; // 某些浏览器需要返回值
});

window.addEventListener('unload', function() {
console.log('Page unloaded');
});
`

表单事件

change: 当元素的值改变时触发。
input: 在元素的值正在改变时触发。
submit: 在表单提交时触发。
`document.querySelector('input').addEventListener('change', function(event) {
console.log('Input value changed to:', event.target.value);
});

document.querySelector('form').addEventListener('submit', function(event) {
event.preventDefault(); // 阻止表单提交的默认行为
console.log('Form submitted');
});
`

Mutation 事件

MutationObserver: 用于监视 DOM 树的变化(如节点的增加、删除、属性的变化等)。
`const targetNode = document.getElementById('someElement');
const config = { attributes: true, childList: true, subtree: true };

const callback = function(mutationsList, observer) {
for(let mutation of mutationsList) {
if (mutation.type === 'childList') {
console.log('A child node has been added or removed.');
}
else if (mutation.type === 'attributes') {
console.log('The ' + mutation.attributeName + ' attribute was modified.');
}
}
};

const observer = new MutationObserver(callback);
observer.observe(targetNode, config);

// 你可以稍后使用以下代码停止观察
// observer.disconnect();
`

Visibility 事件

visibilitychange: 在文档的可见性状态改变时触发(如切换到另一个标签页或最小化窗口)。
document.addEventListener('visibilitychange', function() { if (document.visibilityState === 'visible') { console.log('Page is visible'); } else { console.log('Page is hidden'); } });

Resize 事件

resize: 当窗口或框架的大小发生变化时触发。
window.addEventListener('resize', function() { console.log('Window resized to', window.innerWidth, 'x', window.innerHeight); });

Scroll 事件

scroll: 当页面或元素的滚动位置发生变化时触发。
window.addEventListener('scroll', function() { console.log('Window scrolled to', window.scrollX, window.scrollY); });

Focus 事件

focus 和 blur: 当元素获得或失去焦点时触发。
`window.addEventListener('focus', function() {
console.log('Window has focus');
});

window.addEventListener('blur', function() {
console.log('Window lost focus');
});
`

Intersection Observer API

IntersectionObserver: 用于异步观察目标元素与其祖先元素或顶级文档视窗的交叉状态。
`const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log('Element is in view');
} else {
console.log('Element is out of view');
}
});
});

const target = document.querySelector('#targetElement');
observer.observe(target);
`

Performance Observer API

PerformanceObserver: 监听性能相关的事件,例如页面加载时间、资源加载时间等。
const observer = new PerformanceObserver((list) => { const entries = list.getEntries(); for (const entry of entries) { console.log(${entry.entryType}: ${entry.startTime} - ${entry.duration}`);
}
});

observer.observe({ entryTypes: ['mark', 'measure', 'resource'] });
`

Media Query 事件

matchMedia: 用于监听媒体查询的变化。
`const mediaQuery = window.matchMedia('(max-width: 600px)');

mediaQuery.addEventListener('change', function(event) {
if (event.matches) {
console.log('Viewport is 600 pixels or less');
} else {
console.log('Viewport is more than 600 pixels');
}
});
`

Geolocation API

geolocation.watchPosition: 用于监听地理位置的变化。
if ('geolocation' in navigator) { navigator.geolocation.watchPosition((position) => { console.log('Current position:', position.coords.latitude, position.coords.longitude); }, (error) => { console.error('Error watching position:', error); }); }

Online/Offline 事件

online 和 offline: 当浏览器网络连接状态发生变化时触发。
`window.addEventListener('online', function() {
console.log('Browser is online');
});

window.addEventListener('offline', function() {
console.log('Browser is offline');
});
`

Clipboard 事件

copy, cut, 和 paste: 当用户执行剪贴板操作时触发。
`document.addEventListener('copy', function(event) {
console.log('Content copied');
});

document.addEventListener('cut', function(event) {
console.log('Content cut');
});

document.addEventListener('paste', function(event) {
console.log('Content pasted');
});
`

Storage 事件

storage: 当 Web Storage(localStorage 或 sessionStorage)的内容发生变化时触发。
window.addEventListener('storage', function(event) { console.log('Storage changed:', event.key, event.newValue); });

Hash 变化事件

hashchange: 当 URL 的哈希部分(#)发生变化时触发。
window.addEventListener('hashchange', function() { console.log('Hash changed to:', window.location.hash); });

Popstate 事件

popstate: 当活动历史记录条目更改时(例如,通过用户点击浏览器的“后退”按钮)触发。
window.addEventListener('popstate', function(event) { console.log('Location changed to:', window.location.href); });

Page Visibility API

visibilitychange: 当文档的可见性状态改变时触发。
document.addEventListener('visibilitychange', function() { if (document.visibilityState === 'visible') { console.log('Page is visible'); } else { console.log('Page is hidden'); } });

Battery API

chargingchange, levelchange: 当设备电池充电状态或电量级别变化时触发。
`navigator.getBattery().then(function(battery) {
battery.addEventListener('chargingchange', function() {
console.log('Battery charging changed:', battery.charging);
});

battery.addEventListener('levelchange', function() {console.log('Battery level changed:', battery.level);
});

});
`

Device Orientation 和 Device Motion

deviceorientation 和 devicemotion: 当设备的方向或运动传感器数据变化时触发。
`window.addEventListener('deviceorientation', function(event) {
console.log('Device orientation:', event.alpha, event.beta, event.gamma);
});

window.addEventListener('devicemotion', function(event) {
console.log('Device motion:', event.acceleration, event.rotationRate);
});
`

Pointer 事件

pointerdown, pointerup, pointermove, pointerover, pointerout: 用于处理指针(鼠标、触摸、笔)相关的事件。
`document.addEventListener('pointerdown', function(event) {
console.log('Pointer down at:', event.clientX, event.clientY);
});

document.addEventListener('pointermove', function(event) {
console.log('Pointer moved to:', event.clientX, event.clientY);
});

document.addEventListener('pointerup', function(event) {
console.log('Pointer up at:', event.clientX, event.clientY);
});
`

Fullscreen 事件

fullscreenchange: 当文档进入或退出全屏模式时触发。
document.addEventListener('fullscreenchange', function() { if (document.fullscreenElement) { console.log('Entered fullscreen mode'); } else { console.log('Exited fullscreen mode'); } });

WebSocket 事件

open, message, close, error: 用于监听 WebSocket 连接状态和消息。
`const socket = new WebSocket('wss://example.com/socket');

socket.addEventListener('open', function(event) {
console.log('WebSocket is open now.');
});

socket.addEventListener('message', function(event) {
console.log('WebSocket message received:', event.data);
});

socket.addEventListener('close', function(event) {
console.log('WebSocket is closed now.');
});

socket.addEventListener('error', function(event) {
console.error('WebSocket error observed:', event);
});
`

http://www.zskr.cn/news/31389.html

相关文章:

  • 2025年10月北京工装设计公司推荐榜:筑垒领衔五强对比
  • 2025年10月山东AI公司推荐榜:优立德领衔五强对比
  • AI 超级智能体全栈方案阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
  • 【FAQ】HarmonyOS SDK 闭源开放能力 — AppGallery Kit
  • 0284-KVS-分离读取文件逻辑
  • 0283-KVS-实现 set 和 remove
  • 0281-KVS-启动时加载文件内容
  • 0280-KVS-将日志记录到文件
  • 2025 年留学咨询服务机构最新推荐榜,技术实力与服务品质双重维度剖析英国 / 澳洲 / 香港 / 美国 / 加拿大留学 / 留学中介 / 留学咨询机构推荐
  • 字符串-函数
  • 2025 年纤维喷涂厂家最新推荐榜,技术实力与市场口碑深度解析机房无机 / 隔音无机 / 地下室无机 / A 级防火无机纤维喷涂公司推荐
  • [背包] CF730J Bottles 题解
  • Day5表单—下拉菜单与文本域
  • 2025 年验厂咨询机构最新推荐榜,技术实力与市场口碑深度解析,助力企业突破国际贸易壁垒
  • 干掉 Chrome,Comet AI 浏览器杀疯了!!
  • 知识图谱三强争霸:Neo4j/LightRAG/GraphRAG 全方位 PK 及实战适配指南 - 指南
  • 2025年深圳房产分割律所权威推荐榜单:房产分割律所/婚姻/股权分割专业律师精选
  • 从Palantir本体论,看驱动智能(Data for AI)的下一代数据架构
  • 基于Java+Springboot+Vue开发的婚恋交友网站管理系统源码+运行步骤
  • kvm安装debian13之后启动报错
  • 2025 年最新推荐!钢结构防火涂料厂家排行榜:膨胀型 / 非膨胀型 / 室内外 / 超薄型 / 厚型防火涂料精选
  • 案例解析:养老服务标杆吉宝欣岳年借助纷享销客CRM实现数字化转型升级
  • 20232407 2025-2026-1 《网络与系统攻防技术》 实验三实验报告
  • 题解:uoj748 机器人表演
  • 2025 年混合机,强力混合机厂家最新推荐,产能、专利、环保三维数据透视!
  • Linux 自动输入 Enter 键
  • Voyage系列3: 技巧与提示
  • 完全开源!一款基于 SpringBoot + Vue 构建的社区平台!
  • 【一步步开发AI运动APP】十二、如何进行运动开始前的站位预检,提升用户体验
  • 2025年10月品牌认证机构推荐:权威榜单对比五强优劣