-
移动端表单卡顿等问题源于未正确使用原生属性:用inputmode优先控制软键盘类型,避免type="number"滥用;聚焦时通过fixed定位防错位;autocomplete需语义准确;viewport禁用user-scalable=no以保可访问性;注意inputmode在旧版iOS的兼容性断层。
-
JavaScript可通过FileAPI在浏览器端直接读取用户选择的本地文件,核心是File对象(继承自Blob)与FileReader接口配合;通过<inputtype="file">获取FileList,用readAsText、readAsDataURL或readAsArrayBuffer异步读取,推荐URL.createObjectURL实现高效图片预览,并注意内存释放与大文件分块处理。
-
structuredClone()能深度克隆可序列化数据,避免异步任务中原始数据被意外修改;它支持Object、Array、Map、Set等类型,但不支持函数、Symbol、DOM节点等,需提前清洗或降级处理。
-
entries()方法返回一个迭代器对象,用于遍历数组的索引和值组成的键值对,1.调用arr.entries()返回迭代器而非数组,需通过for...of或next()方法访问;2.每次next()调用返回包含value(键值对)和done(是否结束)属性的对象;3.实际应用包括同时获取索引和值(如生成带索引类名的HTML)、简化数据处理逻辑及与其他迭代方法组合使用;4.相比for...in循环,entries()仅遍历数组元素而不包括自定义或继承属性,避免意外输出,更安全可靠。
-
标签可以提前建立与第三方域名的连接,以优化页面加载性能。以下是具体实现方法和注意事项:一、基本语法rel="preconnect":告诉浏览器该资源需要提前建立连接。href:指定要预连接的第三方域名。二、适用场景preconnect适用于">
仅当确定几秒内必从某第三方域名加载关键资源时才加rel="preconnect",如首屏所需的Google字体、CDN的CSS/JS或强依赖的API;同源、HTTP域名及旧版Safari不适用。
-
多级排序需将比较逻辑压缩进二元函数:先比主字段,相等再比次字段,依此类推;返回负数、正数或0决定顺序;须防空值与类型陷阱,用短路运算(如||、?:)串联层级。
-
SpeechSynthesis实现点击朗读需先监听onvoiceschanged或轮询getVoices()确保音色就绪,每次新建Utterance并调用cancel()避免堆积,且必须由用户手势同步触发speak();移动端兼容性差,fallback应优先考虑视觉模拟而非音频。
-
使用*可选中所有元素设置全局样式,如重置margin和padding、统一box-sizing为border-box、定义字体颜色等,但需注意性能影响、优先级低及滥用导致维护困难。
-
<progress>标签需确保value和max为数字类型,用requestAnimationFrame节流更新,IE需降级为div+CSS;自定义样式须兼容WebKit/Firefox伪元素;手写进度条必须添加role="progressbar"及aria属性;上传进度需校验event.lengthComputable并确认后端返回Content-Length。
-
Tailwind通过PostCSS插件按需生成CSS:插件扫描content配置指定的源文件,静态提取硬编码类名,仅生成实际使用的样式规则,实现精准编译与体积优化。
-
通过递归遍历对象属性并组合PropertyDescriptor,可获取所有层级属性描述符(如user.address.city),需处理嵌套类型、集合、泛型、访问权限及循环引用;推荐优先使用Spring的BeanWrapperImpl。
-
标签的属性,用来防止通过 window.opener 引用当前页面的恶意网站。当用户点击链接并打开新窗口时,如果目标页面通过 window.opener 访问原始页面,可能会导致安全问题(如窗口劫持)。使用 rel="noopener" 可以阻止这种行为。使用方法
rel="noopener"能防窗口劫持,因为它使新页面的window.opener为null,彻底阻断其通过window.opener.location等操作劫持原页面的能力;该属性必须与target="_blank"配合使用才生效。
-
cancelAnimationFrame必须传入requestAnimationFrame返回的有效帧ID才能取消未执行的帧请求,无法中断已进入回调队列的当前帧;动画函数内部须加状态守卫提前return,避免多余操作和内存泄漏。
-
grid-template-areas引号不可省略,否则布局失效;span必须显式声明跨距;gap在旧版Flex中无效;dense模式不改变DOM顺序且z-index无效。
-
::marker颜色未生效主因是父元素color继承或浏览器兼容性不足;仅Chrome108+、Firefox89+、Safari15.4+支持,且Safari对flex/li包裹等场景静默忽略;它仅支持color、content、font-*等极少数属性,不支持大小、对齐或定位。