上一篇
场景引入:
小明正在开发一个电商网站,用户点击“立即购买”按钮时,需要发起AJAX请求提交订单,但突然发现:
1️⃣ 用户疯狂点击导致重复提交
2️⃣ 网络波动时页面直接卡死
3️⃣ 后台返回错误时用户一脸懵
——这不就是缺了事件监听和异常处理嘛!😱
// 老式写法(不推荐) button.onclick = function() { console.log("点击了!"); }; // 现代写法(推荐) button.addEventListener('click', (e) => { console.log(`点击坐标:${e.clientX}, ${e.clientY}`); });
🌟 实战技巧:
let timer; button.addEventListener('click', () => { clearTimeout(timer); timer = setTimeout(() => { submitOrder(); // 实际提交逻辑 }, 500); // 0.5秒内只执行一次 });
// 给父元素绑定事件(适合动态列表) document.getElementById('list').addEventListener('click', (e) => { if (e.target.classList.contains('item')) { console.log(`点击了列表项:${e.target.textContent}`); } });
try { JSON.parse("{错误JSON!}"); } catch (err) { console.error(`解析失败:${err.message}`); alert("数据格式异常,请刷新重试~"); }
fetchAPI() .then(data => { // 成功逻辑 }) .catch(err => { console.error("请求失败:", err); showToast("网络开小差了~"); });
💡 隐藏知识点:
window.onerror
全局捕获: window.onerror = (msg, url, line) => { console.log(`全局异常:${msg} at ${line}`); return true; // 阻止默认报错 };
const orderBtn = document.getElementById('order-btn'); orderBtn.addEventListener('click', async () => { // 1. 立即禁用按钮(防重复点击) orderBtn.disabled = true; try { // 2. 发起AJAX const response = await fetch('/api/submit', { method: 'POST', body: JSON.stringify({ item: "iPhone15" }) }); // 3. 检查HTTP状态 if (!response.ok) throw new Error(`HTTP错误: ${response.status}`); // 4. 解析数据 const result = await response.json(); if (result.code !== 200) throw new Error(result.msg); // 5. 成功处理 alert("下单成功!🎉"); } catch (err) { // 6. 统一错误处理 console.error("订单提交失败:", err); alert(`操作失败:${err.message || "未知错误"}`); } finally { // 7. 无论成功失败都恢复按钮 orderBtn.disabled = false; } });
📌 避坑指南:
err.stack
) 自定义元素的事件需要特殊处理:
customElements.define('my-button', class extends HTMLElement { connectedCallback() { this.addEventListener('special-event', e => { console.log("捕获到自定义事件!", e.detail); }); } });
部分团队开始使用AI工具自动分析前端错误日志,自动归类高频异常(如2025年流行的FrontendGuardian.js
)。
:
addEventListener
+防抖 try-catch
+Promise.catch
双保险 掌握这三板斧,你的前端应用健壮性直接提升200%!💪
(本文技术要点参考自2025年7月发布的《Web开发现代化实践白皮书》)
本文由 娄曾 于2025-07-31发表在【云服务器提供商】,文中图片由(娄曾)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/492054.html
发表评论