-
Worker构造函数只接受HTTP(S)协议的脚本URL,不支持内联字符串或函数体;必须用Blob+URL.createObjectURL()生成application/javascript类型临时URL,并注意清理revokeObjectURL以防内存泄漏。
-
<metacharset="UTF-8">必须放在最前面,因为浏览器流式解析HTML时,若在遇到非ASCII字符前未读取该标签,会按默认编码(如ISO-8859-1)错误解码,导致乱码不可逆;它须是<head>中首个生效标签,且HTML5仅认charset属性,不推荐旧式http-equiv写法。
-
弹性盒子子元素无法居中,根本原因是父容器未设为flex布局或justify-content、align-items未同时设为center;需确保父元素display:flex、设置明确高度,并统一box-sizing:border-box。
-
闭包预初始化通过封装惰性求值逻辑实现冷启动优化:声明时仅绑定作用域并设缓存桩,触发时才执行轻量同步操作(如本地存储读取),支持一次初始化、多次复用,避免全局同步阻塞。
-
persist()仅申请免驱逐特权,不存数据、不操作DOM、不替代localStorage;现代浏览器因origin低价值、缺少用户交互或处于临时存储环境常返回false或静默失败,需用persisted()确认真实状态,并通过配额监控、分库、压缩等设计提升抗驱逐能力。
-
html-minifier的--minify-jstrue选项需依赖terser且仅压缩内联脚本:若未安装terser、语法不兼容、含module/nomodule属性或危险语句,会静默跳过;它不处理外部JS,也不跨script块优化,压缩效果取决于原始JS质量。
-
外边距合并是相邻块级元素垂直margin取较大值而非相加的规范行为;常见于div堆叠、h1后p、父子间;可用BFC阻断,推荐display:flow-root。
-
pagehide能替代unload,但必须结合event.persisted判断:persisted===true表示页面将进入bfcache,不应保存;false才是最后保存时机,否则会导致多存、错存或漏存。
-
HTML站点地图是供用户浏览的语义化导航页,须用<h2><ul><li>等标准标签构建;XML站点地图是供搜索引擎解析的纯XML文件,必须程序生成、UTF-8编码、含正确命名空间及可访问绝对URL。
-
trimEnd比trim更合适,因其仅清除末尾换行符和空白,保留开头缩进与空行等有意格式;现代环境可直接调用,旧环境可用replace(/\s+$/,'')替代,结合paste事件可自动清洗粘贴文本。
-
自定义字体不生效主因是误用theme.fontFamily而非extend.fontFamily,导致默认font-sans等丢失;须用@font-face声明本地字体,键名须合法且统一单引号,路径用绝对URL并加font-display:swap。
-
BEM通过命名约定(block__element--modifier)实现样式隔离,不依赖构建工具,避免全局污染;CSSModules依赖哈希类名,在SSR、动态DOM、第三方组件中易失效。
-
::first-line仅作用于块级容器渲染后的视觉首行,不支持前N字或语义首句;失效主因是父容器为flex/grid/table、首行含内联元素/空格/零宽字符、目标非块级元素或使用单冒号;仅支持color、font-size等文本属性,禁用margin/padding等布局属性。
-
页脚永远贴底需设html/body高度为100%,外层容器用min-height:100vh+grid-template-rows:auto1frauto,使1fr填充剩余空间将footer锚定到底部轨道,确保内容短时贴底、长时正常滚动。
-
真正符合Promises/A+规范的Promise必须严格遵循四条铁律:三态单向流转(pending→fulfilled/rejected不可逆)、微任务调度(queueMicrotask优先)、then返回新实例、错误穿透(try/catch+reject传递)。