-
可通过navigator对象获取浏览器语言、设备类型、平台信息、地理定位和媒体设备支持:navigator.language/languages返回语言代码;userAgent判断移动设备;platform返回操作系统;geolocation检测定位支持;mediaDevices检查媒体访问能力。
-
垂直居中用align-items:center(flex)或place-items:center(grid);父容器须设display:flex/grid和明确高度(如min-height:100vh),否则居中失效。
-
先实现文件选择与上传核心功能,再扩展进度反馈、错误处理与配置化。通过监听input的change事件获取文件,使用FormData和fetch上传,结合XMLHttpRequest的onprogress实现进度条,封装为支持自定义参数(如上传地址、大小限制)的类,提供addFile、start等方法,内置文件校验,兼容现代浏览器并优化性能,逐步支持断点续传与并发控制。
-
addEventListener第三个参数填true表示捕获阶段、false表示冒泡阶段;stopPropagation只阻断当前阶段传播,stopImmediatePropagation才彻底中断;事件委托依赖冒泡,需用event.target判断真实触发元素。
-
使用textContent修改文本,innerHTML插入HTML,value更新表单值,setAttribute和style修改属性与样式,注意安全与事件触发。
-
TypeScript是带类型检查的JavaScript增强版,所有合法JS代码都合法,但通过编译时检查提前拦截空值等错误;优先用interface定义可扩展业务对象,unknown替代any保障安全,类型是需持续维护的活契约。
-
Flex换行后视觉顺序异常实为默认排列逻辑与预期不符,核心解决法是用order微调或重构HTML使语义与视觉一致,每行内部始终按HTML顺序排列。
-
loading="lazy"主要优化首屏以下图片加载,长图文、商品列表及弱网环境下提升显著;首屏关键图启用反而损害LCP,需配合width/height、srcset及preload等协同优化。
-
主线程卡死的典型表现是按钮点不动、滚动条拖不了、requestAnimationFrame停摆、开发者工具打不开;WebWorkers通过独立线程执行CPU密集型任务并用postMessage通信来规避此问题。
-
用JavaScript发送POST请求最直接的方法是使用XMLHttpRequest对象,但现代开发中更推荐使用fetchAPI。使用fetchAPI发送POST请求的步骤如下:1.使用fetch函数发送请求,设置method为'POST',并在headers中设置'Content-Type'为'application/json'。2.在body中使用JSON.stringify()将数据转换为JSON格式。3.使用.then处理响应,使用.catch处理错误。
-
font-weight未生效的主因是字体不支持对应字重,需通过DevTools检查计算值及字体文件是否存在;其次注意加载顺序、简写语法缺失font-family、打印/移动端兼容性等问题。
-
position:relative只改变元素渲染位置而不影响文档流,文字仍按原占位排版;若需文字环绕或对齐,应改用flex、float或vertical-align等方案。
-
Promise是对异步状态的封装,非同步化工具;newPromise(fn)中fn立即执行且须调用resolve/reject;.then()/.catch()每次返回新Promise,状态由回调返回值或错误决定。
-
使用容器和CSS实现HTML视频响应式布局,通过设置宽度百分比、height:auto及padding-bottom维持16:9比例,结合媒体查询优化小屏显示,确保视频自适应不同设备。
-
min-width不改变盒模型类型但影响渲染尺寸,其限制基准由box-sizing决定:content-box限内容宽,border-box限总宽;在flex/grid中常因默认min-width:auto失效;与width、max-width共存时取三者交集,min-width优先级最高。