-
从图块边界、内部内容坐标和 viewBox 三个层面,说明 SVG patternUnits 与 patternContentUnits 的差异、默认值及配置选择。
-
浏览器后台标签页可能延迟定时器,直接用客户端心跳时间判断 WebSocket 存活容易误报。本文说明如何结合 visibilitychange、应用层 ping/pong、服务端确认和退避重连,避免页面恢复时重复连接。
-
IndexedDB 升级应在 onupgradeneeded 中按 oldVersion 累计迁移。本文用独立演示库说明跳版本结构变更、事务活性与失败回滚,并区分回调结束和打开成功。
-
Vite alias 在开发环境可用、Vitest 测试却失效时,优先检查绝对路径、vitest.config.ts 的配置层级、import 与 require 的差异,以及外部化依赖限制。
-
弹窗或侧栏滚到底部后,页面跟着滚动通常是 scroll chaining。本文用 overscroll-behavior 解释 auto、contain、none 和 chain 的差异,并给出只限制纵向滚动的写法与排查边界。
-
调用 scrollTo 后没有触发 scrollend,通常不是事件失效,而是目标滚动位置没有发生变化,或监听了错误的滚动对象。本文拆开 Document、Element、smooth 滚动和程序化收尾的边界,给出可直接改造的 JavaScript 写法。
-
以 MutationObserver 观察动态节点,解释 childList 与 subtree 的范围、组件卸载时的 disconnect、待交付记录的 takeRecords 策略,以及重复挂载和回调写回的清理边界。
-
TypeScript 在 strict 模式下会把 catch 变量视为 unknown。本文从错误收窄、非 Error 抛出值和安全日志三个边界出发,给出可复用的处理函数。
-
MessagePort 放入 postMessage 的 transfer 列表后,发送侧原对象已失去端口所有权,不能再当作有效通信端点。正确做法是主线程保留 port1、只把 port2 交给 Worker,并用 start、ACK、messageerror 与 close 管理通道生命周期。
-
浏览器缓存命中却仍请求服务器,往往是资源过期后发生了协商缓存。本文从 304、Cache-Control、ETag、刷新方式和 Fetch cache mode 入手,给出 HTML、静态资源与个性化响应的排查和配置清单。
-
从主线程帧预算、滚动事件高频位置读取和观察器边界三个层面,说明怎样用 IntersectionObserver 控制 root、rootMargin、threshold,并通过回调去重与 unobserve 减少滚动监听抖动。
-
Transferable objects 可以把 ArrayBuffer 的所有权交给 Worker 或结构化克隆结果,避免不必要的复制。本文用最小 JavaScript 片段说明 transfer list、TypedArray 视图、detached 状态和 SharedArrayBuffer 的边界。
-
解释 CSS :has() 与 :is() 组合时参数选择器如何参与优先级计算,说明为什么后写的规则仍可能失效,并给出用 :where()、拆分选择器和级联层恢复可维护覆盖关系的方法。
-
CSS Flex 对齐文字和图标时,align-items: baseline 负责共享文字基线,行高与按钮默认样式决定细节;本文给出最小写法、inline-flex 替代方案和选择 center 的边界。
-
前端多标签页同步主题、登录态提示或草稿状态时,可以监听 Window 的 storage 事件。本文从一个主题同步小组件出发,说明事件来源、关键字段、删除处理和 sessionStorage 的边界。