前端技术文章
-
Web Components 的 adoptedCallback 只在自定义元素进入新的 Document 时触发。本文区分同文档换位、跨文档移动和 importNode 复制,并说明如何用 oldDocument、newDocument 与 ownerDocument 重绑文档相关资源。382 收藏 -
用版本化 Cache API、install/activate 生命周期和限定 fetch 匹配范围,避免 Service Worker 更新后继续命中旧资源。215 收藏 -
WebSocket close code 1006 不是服务端发送的关闭原因,而是浏览器在没有收到 Close 帧时给出的异常关闭表示。本文用 CloseEvent、代理日志和服务端日志三层证据定位断开位置。154 收藏 -
当多个嵌套组件必须沿用同一组父网格轨道时,CSS subgrid 可以避免重复定义列宽和行高。本文通过卡片与表单场景说明 subgrid 的写法、gap 和隐式轨道边界,以及如何保留独立 grid 回退。147 收藏 -
复杂组件更新时,CSS contain 可以把布局、绘制、样式或尺寸计算限制在子树内。本文说明 layout、paint、size、content 的边界,解释定位和溢出副作用,并给出 contain-intrinsic-size 的实用写法。107 收藏 -
IndexedDB 事务不能稳定跨过 await,因为事务只在创建任务和请求事件回调中保持 active。先完成异步准备,再创建最小范围事务,并用 complete 与 abort 判断最终结果。221 收藏 -
BroadcastChannel 关闭标签页后收不到消息,通常不是浏览器漏发,而是旧实例已离开通道且 API 不保存历史。本文用生命周期封装、主动同步和状态快照给出可落地的处理方式。199 收藏 -
IntersectionObserver 观察列表底部时反复触发,通常源于初始通知、相交状态变化与分页请求状态混在一起。本文用 loading、hasMore、nextCursor 和 unobserve 组合,避免同一页重复请求。106 收藏 -
使用 URLSearchParams.append 逐个生成同名查询参数,用 getAll 读取完整数组,并了解 set 覆盖值、数组初始化和后端解析约定的常见坑。483 收藏 -
AbortController 取消 fetch 后,fetch Promise、Response 和 response.body 处于不同阶段。本文说明如何区分主动取消与网络错误,并在只拿到响应头、不再需要正文时安全清理未消费的 response body。492 收藏 -
Fetch 的 Response body 是一次性可读流。response.json() 消费后,response.text()、blob() 或第二次 json() 都可能因 body 已使用而失败。本文解释 bodyUsed、clone 和单次解析的边界,给出可维护的响应处理方式。323 收藏 -
文章 · 前端 | 2星期前 | 前端 · 浏览器API · Service Worker waiting registration.update updatefound installing active
用 updatefound、installing 的 statechange 以及 waiting 和 active 状态,判断 Service Worker 新脚本是未变化、已安装等待激活,还是已经接管页面,避免把 update() 的 Promise 返回误当成更新完成。394 收藏 -
ResizeObserver 回调修改被观察尺寸会形成布局反馈链。本文从循环成因、requestAnimationFrame 调度、期望尺寸守卫和 CSS 容器查询四个方面给出可落地的排查与修复写法。481 收藏 -
用 IntersectionObserver 的正向 rootMargin 扩大交叉计算区域,让图片在进入视口前开始加载;文章同时说明四值写法、嵌套滚动容器和重复回调的处理方式。263 收藏 -
解释 structuredClone 的 transfer 列表为什么会让原 ArrayBuffer 进入 detached 状态,并给出 byteLength、TypedArray 视图和生命周期管理的排查方法。178 收藏