在 mousedown 事件中,如何区分左键、中键和右键?对应的 button 值是多少?
围绕“在 mousedown 事件中,如何区分左键、中键和右键?对应的 button 值是多少”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出 0/1/2 对应主/辅助/次按钮,以及 buttons 多键状态。
程序员面试题库第 33 页,收录第 1601–1650 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“在 mousedown 事件中,如何区分左键、中键和右键?对应的 button 值是多少”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出 0/1/2 对应主/辅助/次按钮,以及 buttons 多键状态。
围绕“mouseleave 事件不冒泡,那么要实现鼠标离开一组子元素的统一处理,可以使用什么替代方案”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明用 mouseout 配合 relatedTarget 或监听 mouseleave 于父级(不冒泡但捕获不可用),或使用 po。
围绕“Pointer Events 与 Mouse Events 相比有哪些优势?在处理触摸设备时为何推荐使用前者”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明统一鼠标/触摸/笔、支持多点触控、pointerdown/up 捕获及悬停。
围绕“在处理单指触摸时,使用 Pointer Events 与 Touch Events 有何区别?哪种更适合跨设备”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须对比统一性、支持触控点、事件对象特性和浏览器兼容,并推荐 Pointer;不扩展到鼠标兼容。
围绕“哪些情况会触发 pointercancel 事件?实现拖拽时为何需要监听它”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出浏览器接管、触摸滚动、移动点击等,并说明在拖拽中清除状态。
围绕“setPointerCapture 有什么作用?何时需要手动释放?给出一个拖拽实现的典型用法”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明将后续指针事件重定向到指定元素直到释放,以及仅在 pointerdown 等调用,release 或不需显式(自动释放)。
本文解释如何用 preventDefault 阻止滚轮引起的页面滚动,同时保留自定义行为;重点说明 passive 选项的影响、滚动动画管理、负滚动链及 wheel 事件可取消性的注意事项。
本题解析 addEventListener 回调中 return false 与调用 preventDefault() 的本质区别,说明 return false 仅对 on-event 处理器有效,不适用于 addEventListener,并给出正确实践。
讲清 DOM 事件捕获、目标、冒泡三阶段的先后次序与监听器触发时机,说明目标元素上两类监听器都触发这一细节,并给出判断当前阶段的 eventPhase 用法与常见误区。
围绕“同一元素上绑定多个相同类型事件,两个监听器的触发顺序如何保证”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明按添加顺序触发,且捕获/冒泡阶段不同层级才有抢跑;不能依赖顺序时如何用 once/特定选项。
围绕“scroll 事件本身不冒泡,如何在不给每个滚动容器绑定监听器的情况下统一管理”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明可以通过捕获阶段监听 document 或 window,以及如何使用 scroll event 的 capture。
围绕“scroll 事件触发非常频繁,如何有效地控制处理频率?请对比 rAF、timeout 和 passive 的配合”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较 rAF 与防抖节流在滚动中的差异,以及 passive 保证不被阻塞。
围绕“scrollend 事件与 scroll 事件有何不同?在处理“停止滚动后执行操作”时如何利用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 scrollend 在所有滚动手势结束后触发,而 scroll 持续触发。
本题对比 stopPropagation() 与 stopImmediatePropagation():前者允许同元素其他监听器执行完再停止传播,后者立即终止同元素剩余监听器并停止传播,文中给出模拟分发代码、适用场景与失效边界。
围绕“如何手动创建并派发一个冒泡的 ClickEvent?有哪些属性需要设置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 new Event('click', {bubbles:true})、派发目标及构造函数中可设置的 cancelable。
本文用父子列表事件说明 event.target 与 event.currentTarget 的本质区别,解释事件委托中为何用 target 判断来源,并提醒 currentTarget 在异步回调中失效的边界。阅读后可避免常见误判,正确编写委托代码。
围绕“CSS 属性 touch-action 如何影响 touch 事件的默认行为?与使用 preventDefault ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 touch-action 可在手势开始前声明禁止滚动/缩放手势,防止延迟,而 JS preventDefault 只能之后取消。
围绕“TouchEvent 中 touches、targetTouches、changedTouches 三个列表的区别是”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明各自含义:当前所有触点、目标元素上的、发生变化的;在 touchend 中只能用 changedTouches 获取消失的点。
围绕“什么情况下会触发 touchcancel?在实现自定义滑动手势时为何要处理它”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列举系统中断、来电、浏览器接管滚动等,并强调清除手势状态。
围绕“appendChild 和 insertBefore 在插入节点时的行为有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明前者总是末尾插入,后者需指定参考节点,以及返回值和边界(null 参数)。
围绕“slot.assignedNodes() 和 assignedElements() 的区别在何处”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明过滤非元素节点,以及是否包含 fallback 内容。
围绕“为什么自定义元素需要 attachShadow,而普通 Div 也能附加 Shadow Root”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需揭示 Shadow DOM 的封装功能,以及是否需要 open/closed 模式,不谈及样式隔离细节。
围绕“Attr 接口在 DOM 中代表什么?为什么不是所有属性都能当作节点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明属性类型、命名空间、与元素属性的区别。
围绕“childNode.replaceWith 和 parentNode.replaceChild 有什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需强调调用对象和参数不同,以及兼容性。
围绕“compareDocumentPosition 可以返回哪些标志位?常用在哪里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需列出常量如 DOCUMENT_POSITION_PRECEDING 等,用途如排序,不分析算法。
围绕“事件对象中 composedPath() 与 path 属性有什么不同?与 Shadow DOM 有何关系”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答 composedPath 是标准且穿过 Shadow DOM 边界、path 是旧的不保证。
围绕“createTextNode 的使用场景与直接设置 textContent 有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需侧重创建独立节点插入 vs 直接替换全部子文本,以及能否再追加。
对比 createElement 与 cloneNode 在创建节点时的机制差异:前者新建空元素,后者复制节点及可选子树;强调属性保留但事件丢失,并给出实际场景与边界。
围绕“自定义元素生命周期中 connectedCallback 和 disconnectedCallback 分别在什么时”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需区分插入到文档或删除时,以及为什么不可信时不执行。
围绕“document.documentElement 和 document.body 分别指向什么节点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答一个指向根元素 <html>,另一个指向 <body>,以及在严格文档和动态创建中的差异。
围绕“document.visibilityState 与 document.readyState 分别反映文档什么状态”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答浏览器可见性(页面隐藏)与加载阶段,用于不同场景。
围绕“DocumentFragment 是用来解决什么问题的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它作为轻量级容器避免多次重排和性能问题,但不适于实际插入。
本题对比 DOM 中 firstChild 与 firstElementChild 的差异,强调 childNodes 与 children 的关系、空白节点的影响及返回值判定,给出具体场景与边界。
围绕“通过 getAttribute 读取 HTML 属性与直接访问元素属性(如 id)有何本质区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需区分属性字符串与属性值类型(如 value 和 checked),以及同步性。
围绕“HTMLCollection 的 namedItem 方法在什么时候有用?它如何处理重名的项”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答可用于表单等带 name 属性元素。会返回第一个匹配或 null。
围绕“importNode 和 adoptNode 在跨文档复制节点时有何区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答导入返回新副本而采纳移动原节点,也讨论可选 deep 参数,但不涉及安全性。
解析 innerHTML 与 outerHTML 对 DOM 的影响范围:innerHTML 只操作内容,不涉及自身;outerHTML 操作元素整体,赋值时替换节点。涵盖读取差异、赋值行为、无父节点情况以及引用保留。
围绕“insertAdjacentHTML 与设置 innerHTML 在插入内容上有什么关键差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答插入位点控制、不影响目标元素内部的现有节点与是否重新解析。
围绕“isSameNode 和 isEqualNode 在比较节点时有什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需区分比引用同一对象与比内容结构是否相等(含属性、文本、子节点)。
围绕“MutationObserver 回调中 MutationRecord 的 target、addedNodes 和 ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明每个变更记录的含义和对应属性值。
围绕“在 observe 时 childList、attributes 和 characterData 这三个选项分别监控”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需准确列出分别跟踪子节点增删、属性变化和文本数据变化,不引入其他 option。
围绕“MutationObserver.takeRecords 的用途和时机是什么?它和回调有什么关联”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答在回调尚未执行前清空队列并返回记录,适合手动处理同步记录。
本题详解 NodeList 与 HTMLCollection 的区别:包含节点范围(元素 vs 所有节点)、动态与静态性、可用的数组方法。通过具体示例展示 childNodes 和 children 的差异,以及 querySelectorAll 的静态特征。帮助开发者选择正确的 API 遍历节点。
围绕“normalize 方法的作用是什么?它会在什么情况下拆分文本节点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答消除空文本和合并相邻文本节点,也可能创建文本节点?但主要是清理。
围绕“自定义元素必须定义 observedAttributes 才能收到 attributeChangedCallback”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明缺省时不会调用,以及数组内属性变化才触发,但不讨论列表之外的 setAttribute。
本文对比 Element.children 与 Node.childNodes:前者仅枚举元素子节点,后者包含所有子节点类型。解释 live 集合行为及遍历时的坑,帮助选择正确的遍历方式。
本文对比 querySelector 和 getElementById 的机制差异:参数类型、返回结果、错误处理、缓存行为。通过具体场景说明如何选择,并指出重复 ID、特殊字符、动态更新等边界条件。
围绕“缺少 <!DOCTYPE html> 会影响 DOM 树的哪些行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答文档是否标准模式、某些属性的表现(如 aspect ratio),不解释 CSS 布局。
围绕“range.cloneRange 和 range.cloneContents 的区别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需区分复制范围边界与复制范围包含的内容 Fragment。
围绕“Range.extractContents 和 deleteContents 有什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答是否返回被删除的节点,以及是否重新组织文档结构。