-
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传递)。
-
父容器高度塌陷时应设position:relative激活定位上下文,使absolute子元素相对于它定位;父容器需有明确尺寸或由其他非absolute内容撑开,不可依赖absolute元素反向撑高。
-
最轻量可控的屏蔽方式是在Patch操作前加逻辑判断。需检查必填字段非空、人员字段已选、避免重复提交;将Patch移至确认按钮而非OnChange触发;结合FormMode控制适用范围,确保仅在条件完备时执行。
-
仅靠object-fit:cover无法实现真正可靠的移动端全屏视频背景自适应,必须配合muted、playsinline、autoplay、preload等HTML属性,JavaScript主动播放控制,body{overflow-x:hidden}裁剪水平溢出,以及viewportmeta声明,才能解决播放失败、强制跳转、滚动条、裁切关键内容等核心问题。
-
制定JavaScript代码规范的核心目标是提升代码可读性、可维护性和团队协作效率。通过使用ESLint和Prettier统一代码风格,结合husky与lint-staged实现提交前自动化检查;命名上采用语义化的小驼峰式变量函数名、大驼峰式类名、全大写常量名,并用is/has/should前缀标识布尔值;保持文件职责单一,采用ES6模块语法,控制函数长度并合理使用解构赋值与箭头函数;在安全方面强制使用===比较,禁用var,捕获异常并校验用户输入。团队应基于Airbnb或Google规范裁剪出适合项目的