在 Worker 中通过 importScripts() 加载多个脚本时,执行的顺序和错误处理是怎样的?
在 Worker 中通过 importScripts() 加载多个脚本时,执行的顺序和错误处理是怎样的? 本文先给出可直接复述的结论,再用最小代码说明importScripts 加载顺序与错误处理的工作方式、判断依据、项目边界和常见误区。
浏览器面试题第 5 页,显示第 201–250 题,共找到 301 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
在 Worker 中通过 importScripts() 加载多个脚本时,执行的顺序和错误处理是怎样的? 本文先给出可直接复述的结论,再用最小代码说明importScripts 加载顺序与错误处理的工作方式、判断依据、项目边界和常见误区。
在一个 Worker 内部还能再创建新的 Worker 吗?嵌套 Worker 有什么限制? 本文先给出可直接复述的结论,再用最小代码说明嵌套 Worker 创建与限制的工作方式、判断依据、项目边界和常见误区。
解释 Web Worker 可访问与不可访问的 API 边界:独立全局作用域无 window 和 DOM,但保留网络、存储、定时器等能力,并给出工程判断方法。
有哪些常见的 Worker 内存泄漏场景,比如忘记 terminate 或停止端口? 本文先给出可直接复述的结论,再用最小代码说明Worker 内存泄漏 terminate 端口的工作方式、判断依据、项目边界和常见误区。
MessageChannel 和 MessagePort 与 Worker 的 postMessage 有什么关系? 本文先给出可直接复述的结论,再用最小代码说明MessageChannel MessagePort 与 Worker 通信的工作方式、判断依据、项目边界和常见误区。
在 Worker 中用 type='module' 加载 ES 模块脚本与经典脚本有何不同? 本文先给出可直接复述的结论,再用最小代码说明Worker type module ES 模块加载的工作方式、判断依据、项目边界和常见误区。
在 Worker 中可以使用 XMLHttpRequest 或 fetch 发起网络请求吗? 本文先给出可直接复述的结论,再用最小代码说明Worker 中 fetch XMLHttpRequest 网络请求的工作方式、判断依据、项目边界和常见误区。
在 Worker 中监听消息时,用 onmessage 属性和 addEventListener('message') 有何区别? 本文先给出可直接复述的结论,再用最小代码说明Worker onmessage 与 addEventListener 区别的工作方式、判断依据、项目边界和常见误区。
当需要并行执行多个计算任务时,使用一个 Worker 池(pool)比单个 Worker 有什么好处? 本文先给出可直接复述的结论,再用最小代码说明Worker 池并行任务优势的工作方式、判断依据、项目边界和常见误区。
在 Worker 与主线程之间如何处理请求-响应的模式(如消息 ID)?没有现成的 API,怎么实现? 本文先给出可直接复述的结论,再用最小代码说明Worker 请求响应模式 消息 ID 实现的工作方式、判断依据、项目边界和常见误区。
在主线程与 Worker 之间用 postMessage 传递复杂对象时,数据是如何拷贝的? 本文先给出可直接复述的结论,再用最小代码说明postMessage 结构化克隆 Worker的工作方式、判断依据、项目边界和常见误区。
Worker 能访问主页面所在的 cookie 吗? 本文先给出可直接复述的结论,再用最小代码说明Worker 访问 cookie的工作方式、判断依据、项目边界和常见误区。
加载 Worker 脚本文件时受哪些同源或 CORS 限制? 本文先给出可直接复述的结论,再用最小代码说明Worker 脚本同源与 CORS 限制的工作方式、判断依据、项目边界和常见误区。
普通 Web Worker 和 Service(服务)Worker 在被用户关闭标签页后的生命周期有何不同? 本文先给出可直接复述的结论,再用最小代码说明Worker 与 Service Worker 标签页关闭生命周期的工作方式、判断依据、项目边界和常见误区。
能否继承 Worker 类来创建自定义 Worker? 本文先给出可直接复述的结论,再用最小代码说明继承 Worker 类可行性的工作方式、判断依据、项目边界和常见误区。
调用 worker.terminate() 后,Worker 正在执行的任务和资源会被怎样处理? 本文先给出可直接复述的结论,再用最小代码说明worker.terminate 资源清理的工作方式、判断依据、项目边界和常见误区。
在 Worker 内部调用 self.close() 和主线程调用 worker.terminate() 有什么异同? 本文先给出可直接复述的结论,再用最小代码说明self.close 与 worker.terminate 区别的工作方式、判断依据、项目边界和常见误区。
Worker 中支持 setTimeout 和 setInterval 吗?它们与主线程有何异同? 本文先给出可直接复述的结论,再用最小代码说明Worker setTimeout setInterval 支持的工作方式、判断依据、项目边界和常见误区。
首次点击引导只需运行一回时,addEventListener 的 once 会在回调被调用后自动移除监听器,不管业务是否成功。若组件在首次点击前就关闭,仍要用 signal 或同一函数引用主动清理;一次执行与生命周期结束是两件事。
表单想在子输入框获得焦点时统一记录字段,可以在祖先捕获 focus,或改听会冒泡的 focusin。捕获监听沿祖先向目标运行,适合少量前置观察;它仍受传播路径和更外层监听器影响,清理时也要匹配捕获标志。
点击图表后把浮层放在指针旁,固定定位通常使用相对视口的 clientX 和 clientY;文档定位要考虑 pageX、pageY,容器内部还需减去自身矩形偏移。screenX 属于屏幕坐标,不能直接套给网页元素,边框与变换也会影响换算。
保存按钮应在用户完成激活时响应 click,这条路径还覆盖键盘;拖拽画布则要从 pointerdown 或 mousedown 开始记录起点。mousedown、mouseup 与 click 的时机和输入来源不同,不能把 click 当成任意按下加释放的机械组合。
手写笔移动很快时,浏览器可能把多次采样合并为一次 pointermove;getCoalescedEvents 可取回中间点,让轨迹少些折角。它增加的是输入精度,不会提高显示器刷新率;画布坐标、DPR、性能开销和 API 兼容都要另外处理。
文件树自定义右键菜单应监听 contextmenu,在事件可取消时阻止原生菜单,再根据指针位置或当前聚焦行定位。键盘也能请求上下文菜单,所以还要给操作项焦点、Escape 关闭和焦点返回路径,并处理视口边缘的遮挡。
组件选中列表项后,可以用 CustomEvent 的 detail 把记录 ID 发给外部;dispatchEvent 会同步调用监听器。事件默认不冒泡,跨 Shadow DOM 边界还要设置 composed;负载对象按引用传递,事件名与 detail 结构都应作为组件接口维护。
文件列表双击打开之前,典型鼠标路径已经发生两次 click,浏览器不会替你延后第一次单击。单击若只负责选中,两种动作可以共存;若单击会删除或发请求,就要重新设计互斥策略,还需为键盘和触屏保留独立入口。
子组件调用 preventDefault 后,父级可通过 defaultPrevented 判断这次事件的默认行为是否已被有效取消;前提是事件可取消且父级读取时子监听已运行。它与 stopPropagation 各管不同事情,也不能直接等同于“所有业务处理都完成”。
待办项由接口不断追加时,在稳定列表父级注册一次 click,再用 closest 找到删除按钮和所属项,新项也能工作。按钮内图标会改变实际 target,contains 可防止匹配越界;若整个父容器被替换,监听仍需重新注册。
父级默认委托 click 很直接,但 focus、blur 和 mouseenter、mouseleave 不按普通冒泡路径到达。表单可用 focusin、focusout 或捕获 focus;悬停可用 mouseover、mouseout 并检查 relatedTarget,防止在同一项的子元素之间移动时重复触发。
代码调用 dispatchEvent 时,监听器在方法返回前同步执行,所以同步修改的 DOM 下一行就能读到;Promise 与定时器则不会被等待。可取消事件的返回值能表达同步否决,但不能用 async 监听器来等待弹窗确认或服务端校验。
Web Component 内部派发的事件若要到达外部,必须看 composed 是否允许跨影子边界;祖先冒泡监听还需要 bubbles。跨边界后 target 可能重定向为宿主,闭合根的内部路径不会向外暴露;公开业务数据应通过事件 detail 提供。
同一次事件派发中的父子监听器拿到同一个 Event,但 currentTarget 会随当前监听器改变,异步读取时往往已为空。脚本能在前次派发结束后复用自建事件,不能在派发中重入;每次业务动作新建对象并提前保存 ID、坐标更可靠。
addEventListener 的 signal 选项如何帮助自动移除监听器?实现 AB 测试或一次性订阅时有用吗? 本文先给出可直接复述的结论,再用最小代码说明addEventListener signal AbortController的工作方式、判断依据、项目边界和常见误区。
focus 和 blur 事件不冒泡,为何仍能通过事件委托实现,但必须使用捕获? 本文先给出可直接复述的结论,再用最小代码说明focus blur 不冒泡 捕获事件委托的工作方式、判断依据、项目边界和常见误区。
focusin/focusout 事件与 focus/blur 事件在冒泡行为上有何差异?在表单校验中如何选择? 本文先给出可直接复述的结论,再用最小代码说明focusin focusout 与 focus blur 区别的工作方式、判断依据、项目边界和常见误区。
KeyboardEvent.key 和 KeyboardEvent.code 分别表示什么?在什么场景下应使用 code 而不是 key? 本文先给出可直接复述的结论,再用最小代码说明KeyboardEvent key 与 code 区别的工作方式、判断依据、项目边界和常见误区。
如何阻止空格键或方向键触发页面滚动,同时保留输入框内的默认行为? 本文先给出可直接复述的结论,再用最小代码说明keydown 阻止空格键方向键页面滚动的工作方式、判断依据、项目边界和常见误区。
为网页实现自定义键盘快捷键如 Ctrl+S 保存,如何确保不触发浏览器默认保存? 本文先给出可直接复述的结论,再用最小代码说明keydown 自定义快捷键 阻止浏览器默认行为的工作方式、判断依据、项目边界和常见误区。
键盘按住不放时 keydown 事件重复触发,如何利用 event.repeat 属性? 本文先给出可直接复述的结论,再用最小代码说明keydown event.repeat 自动重复触发的工作方式、判断依据、项目边界和常见误区。
keydown 事件与已废弃的 keypress 事件有何区别?为什么推荐用 keydown? 本文先给出可直接复述的结论,再用最小代码说明keydown 与 keypress 事件区别的工作方式、判断依据、项目边界和常见误区。
mouseenter 与 mouseover 在冒泡行为和对子元素的触发上有什么区别? 本文先给出可直接复述的结论,再用最小代码说明mouseenter 与 mouseover 冒泡区别的工作方式、判断依据、项目边界和常见误区。
在 mousedown 事件中,如何区分左键、中键和右键?对应的 button 值是多少? 本文先给出可直接复述的结论,再用最小代码说明MouseEvent button 区分左键中键右键的工作方式、判断依据、项目边界和常见误区。
mouseleave 事件不冒泡,那么要实现鼠标离开一组子元素的统一处理,可以使用什么替代方案? 本文先给出可直接复述的结论,再用最小代码说明mouseleave 不冒泡 替代方案的工作方式、判断依据、项目边界和常见误区。
Pointer Events 与 Mouse Events 相比有哪些优势?在处理触摸设备时为何推荐使用前者? 本文先给出可直接复述的结论,再用最小代码说明Pointer Events 与 Mouse Events 区别的工作方式、判断依据、项目边界和常见误区。
在处理单指触摸时,使用 Pointer Events 与 Touch Events 有何区别?哪种更适合跨设备? 本文先给出可直接复述的结论,再用最小代码说明Pointer Events 与 Touch Events 区别的工作方式、判断依据、项目边界和常见误区。
哪些情况会触发 pointercancel 事件?实现拖拽时为何需要监听它? 本文先给出可直接复述的结论,再用最小代码说明pointercancel 事件触发场景的工作方式、判断依据、项目边界和常见误区。
setPointerCapture 有什么作用?何时需要手动释放?给出一个拖拽实现的典型用法。 本文先给出可直接复述的结论,再用最小代码说明setPointerCapture 拖拽实现 用法的工作方式、判断依据、项目边界和常见误区。
如何用 preventDefault 阻止滚轮事件引发的页面滚动,但保留自定义滚轮行为?需要注意什么? 本文先给出可直接复述的结论,再用最小代码说明wheel 事件 preventDefault 自定义滚动的工作方式、判断依据、项目边界和常见误区。
本题解析 addEventListener 回调中 return false 与调用 preventDefault() 的本质区别,说明 return false 仅对 on-event 处理器有效,不适用于 addEventListener,并给出正确实践。
DOM 事件传播的三个阶段(捕获、目标、冒泡)分别是什么,监听器在哪个阶段触发? 本文先给出可直接复述的结论,再用最小代码说明DOM 事件传播 捕获 冒泡 阶段的工作方式、判断依据、项目边界和常见误区。