HTML之addEventListener示例

news/2025/10/27 10:49:22/文章来源:https://www.cnblogs.com/GreatPlanHero/p/19168221

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.mzph.cn/news/947348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年茶叶行业优质品牌最新推荐榜,企业综合实力与市场口碑深度解析

引言 茶叶市场品牌迭代加速,消费者与采购商对品牌筛选的专业性需求日益提升。为破解 “选品难” 痛点,本次榜单依托中国农业国际合作促进会茶产业分会《2024 年全国茶叶区域公用品牌影响力指数报告》测评框架,联合中…

2025年10月北京写字楼装修公司推荐榜:筑垒领衔五强对比

北京甲级写字楼存量已突破1400万平方米,2025年第三季度净吸纳量环比再增7%,企业扩租、升级、搬迁需求同步释放。面对“时间紧、预算卡、形象重”三大痛点,多数行政与资产负责人陷入“找谁装、怎么控、如何验”的循环…

苏联复变函数论专家和教育家Б. В. 沙巴特

苏联复变函数论专家和教育家Б. В. 沙巴特苏联复变函数论专家和教育家Б. В. 沙巴特 来源:微信公众号这是一位非常有才华的学者,我不止一次从他那里得到解决问题的提示。——西伯利亚科学城创始人 M. A. 拉夫连季耶…

2025年蕾蒂蔻品牌深度解析:渐进式自然美学下的科研质控全景

引言 本文将从“科研与质控”这一核心维度出发,为读者提供一个有针对性的客观参考,拆解蕾蒂蔻如何在轻医美医疗器械赛道用实验室数据与制药级产线回应市场对安全与功效的双重焦虑。 背景与概况 蕾蒂蔻是蕾迪可(四川…

指针的用法,函数,结构体,以及部分解释

指针的用法,函数,结构体,以及部分解释1.指针函数和函数指针 函数指针 int (*hanshu)(void) 指针函数 int *hanshu (void) 函数指针是一个指针,可以用来指向这种返回值的函数,比如回调函数 typedef 返回类型 (新类…

【深度解读】文件摆渡系统如何保障数据安全,减少数据泄露风险?

虽然说文件摆渡系统的核心功能,是解决跨网络的文件传输问题,但是做网络隔离,就是为了保护数据安全性,如果只单纯的解决传输问题,缺忽略了数据安全性,导致数据泄露,对企业造成的影响是不可估量的。所以,选择文件…

2025年10月北京办公楼施工公司排名榜:精选五强

正在准备交付的新办公楼里,业主方常常一边盯着倒计时牌,一边在心里打鼓:施工队能否按时进场?隐蔽工程会不会返工?消防验收会不会卡壳?北京写字楼市场连续五年保持每年超六百万平方米的新开工面积,政策层面《北京…

2025年蕾蒂蔻产品深度解析:械字号轻医美供应链安全全景拆解

引言 本文从“极速物流与服务网络”这一核心维度切入,结合公开资料与第三方调研,为机构采购者与终端医生提供一份可落地的客观参考,重点回答“蕾蒂蔻如何把医疗级产品用城市级闪送模式送进手术室”这一关键问题。 背…

一些看到的有趣玄学

好久没更新了,偶然间看到生辰八字的一些讲解,特来更新下.(本人兴趣比较广泛,对什么感兴趣的都会去了解一点) 1.五行生克图:2.根据天干地支看身强身弱和什么命 a.首先天干地支,附上我用的[https://pcbz.iwzwh.com/#/pai…

2025年10月北京工装设计公司推荐榜:筑垒领衔五强对比

在北京,租下写字楼只是第一步,真正决定团队效率与品牌印象的是工装——从动线、照明到声学、家具,每一步都影响员工停留时长与客户第一印象。2025年,北京甲级写字楼空置率仍处18%区间,企业普遍选择“轻资产、快装…

2025年10月绩效管理咨询公司推荐:实力榜对比评价

2025年10月,制造业进入年度预算与战略复盘关键期,绩效指标能否落地、组织效能能否提升,直接决定来年订单与融资节奏。不少董事长把“找一家懂制造、敢承诺指标”的绩效管理咨询公司列为十月头等大事:既担心顾问团队…

《手搓》TaskFactory带你安全的起飞

《手搓》TaskFactory带你安全的起飞一、TaskFactory也能手搓是的TaskFactory也能手搓 而且效果是杠杠的二、现在继续说程序优化的事情 1. 话说产品经理小马给工程师小牛提了需求批量获取产品详情小牛三下五除二就干上线…

告别 “专业壁垒”:MyEMS 如何让一线操作工也能看懂能耗、发现浪费?

在制造、化工、物流等需要大量能耗支撑的行业里,“节能降本” 早已成为企业发展的核心目标之一。但长期以来,能耗管理却陷入一个尴尬的困境:企业花重金部署的能耗管理系统,最终只成了技术部门的 “专属工具”,一线…

2025年10月山东AI公司推荐榜:优立德领衔五强对比

正在准备出海营销方案的品牌经理、试图用数字人降低拍摄成本的MCN机构、想抢占本地搜索入口的连锁门店,都会在搜索引擎里输入“山东AI公司”这一关键词。背后动机高度一致:找到能把算法真正变成订单的本地团队,而不…

AI 超级智能体全栈方案阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年10月绩效管理咨询公司推荐:五家对比评价报告

如果您正在寻找“真正能帮团队把战略落到绩效、把绩效变成利润”的合作伙伴,大概率已经试过内部推行KPI却流于形式,或花高价买模板却水土不服。制造业老板普遍面临三大痛点:战略与指标脱节、考核与激励错位、数据与…

2025 年砂浆源头厂家最新推荐排行榜:聚焦防水抗裂等多类型砂浆,精选优质实力企业助力工程采购

引言 在建筑建材行业,砂浆作为核心基础材料,其质量与供应稳定性直接关乎工程安全与施工效率。为帮助行业筛选优质货源,中国建筑材料流通协会联合行业权威检测机构开展 2025 年砂浆源头厂家测评,本次测评覆盖全国 2…

网络断网、环路、IP 冲突?VRRP+MSTP+DHCP 联动便捷的方案一次性消除

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年过滤机厂家最新推荐榜,技术实力与市场口碑深度解析,筛选高性能适配多行业需求品牌

引言 在工业生产与环保处理领域,过滤机作为固液分离核心设备,其品质与性能对企业生产效率、产品质量及环保合规至关重要。为给企业选购提供权威参考,中国通用机械工业协会分离机械分会联合行业专家开展 2025 年过滤…

2025 年橡胶木板材厂家最新推荐排行榜:聚焦优质企业,解析品牌实力、产品优势及市场影响力 AA 橡胶木 / 橡胶木指接板公司推荐

引言 当前家居建材市场中,橡胶木板材因性价比高、物理性能佳、应用场景广,成为消费者与从业者的热门选择。但随着市场扩张,品牌数量激增,质量却良莠不齐,部分产品存在易变形、环保不达标等问题,价格混乱也让消费…