-
HTMLaudio元素不支持平滑淡入淡出,必须用WebAudioAPI:需用户手势创建AudioContext,用createMediaElementSource接入音频,所有时间计算基于ctx.currentTime。
-
WeakRef无法直接包裹WebGLTexture,因其是宿主对象且不受JSGC管理;可行方案是用WeakRef持有HTMLImageElement或轻量元数据对象,并通过FinalizationRegistry在对象销毁时调用gl.deleteTexture(),且须先校验gl.isTexture()。
-
align-self不生效的主因是父容器交叉轴无固定尺寸;其次被align-items:stretch拉伸掩盖;再者margin:auto会优先覆盖;最后父容器未启用Flex布局也会导致完全失效。
-
前端不能独立实现服务端级令牌桶限流,因其依赖全局、原子、时钟同步的状态,而本地计时易篡改、多标签不共享、时间不准;只能模拟行为,通过本地桶估算+响应头协同(429、X-RateLimit头)+UI反馈实现提前拦截与智能退避。
-
依赖收集记录的是“谁在读这个值”,即正在执行的副作用函数(effect),并在属性被访问时将其加入该属性专属的监听集合,实现精准更新。
-
位图索引通过将权限映射为整数的二进制位实现高效校验,固定枚举编号、单用户仅需8字节存储、零查询位运算判断权限,超64项时分段管理,内存节省95%以上。
-
IntersectionObserver本身不是预加载系统,只是可见性传感器;需封装观察器、制定资源识别规则、设计预取执行策略、构建策略控制中枢四者协同才能实现首屏自动预加载。
-
要实现60FPSDOM状态切换动画,需用transform/opacity替代布局属性,配合will-change动态启用与requestAnimationFrame同步渲染,并通过DevTools验证图层与帧耗时。
-
IntelliJIDEA中HTML5文件可借助内置浏览器、外部浏览器、内置HTTP服务器或LiveEdit插件实现预览:一、右键选OpeninBuilt-inPreview;二、配置外部浏览器后右键打开;三、通过JavaScriptDebug配置本地服务器访问;四、安装LiveEdit插件实现保存即刷新。
-
localStorage并非真正离线存储,但它是轻量易用的浏览器端持久化方案;写入失败主因有四:无痕模式禁用、超配额(5–10MB)、非字符串值未序列化、iOSSafari低内存自动清理,须用trycatch+JSON处理并降级兜底。
-
ESLint的no-magic-numbers规则仅做静态检查,不支持自动替换为具名常量,因其设计为只读分析;真正实现语义化重写的需在构建阶段通过Babel插件等可写工具操作AST,并辅以上下文判断、作用域管理与可维护性设计。
-
浮动元素后出现空白是因为其脱离文档流导致父容器高度塌陷,后续元素从顶部布局;clear需作用于浮动后的块级元素才有效,现代推荐用display:flow-root触发BFC解决。
-
Tailwindutility类不生效最常见的原因是PurgeCSS误删未直接匹配的类名或CSS引入顺序导致覆盖;需检查content配置路径是否完整、动态class是否显式声明、@tailwind三指令顺序是否正确、JIT模式是否正常工作及PostCSS插件是否加载成功。
-
MessageChannel必须为每个Worker单独创建,不支持一对多复用;Worker收到port后需显式调用port.start()才能收消息;高频小数据通信优先用port.postMessage(),大数据传输仍用worker.postMessage()+transferable;Worker无法自行创建MessageChannel。
-
推荐使用伪元素+渐变背景模拟阴影,通过::before或::after设置linear-gradient配合filter:blur()和z-index实现;也可用多层box-shadow叠加形成过渡错觉,适合简单场景;对复杂图形可选drop-shadow();CSSPaintAPI为实验性方案。