由 pnpm docs:lessons 生成;内容源 src/data/advanced.json,合同源 scripts/generate-advanced.mjs。含教师参考答案。前置:24、48。
模拟位置、方向和相关条件。区分坐标、权限和业务降级;Sensors 的位置与方向模拟不能覆盖全部真机环境。
Geolocation 返回 latitude、longitude;业务函数须保持一致。
拒绝、不可用和超时是不同错误;都有可操作的降级。
deviceorientation 的角度与 Device Mode 的横竖屏不是同一输入。
改变位置观察业务分支。改变本课输入条件并预测结果;对照请求、状态或约束的关系;切换最小修复并复位,核对改变的范围。综合题先提交判断再解锁因果模型,所有模型不计完成。
附近门店选错城市,或者定位失败后一直显示加载。
- 先用本地坐标与错误夹具理解三个分支;它们不是浏览器传感器。
- 打开 Sensors,选择 Shanghai 或自定义 31.23、121.47;在页面主动点击读取浏览器位置。
- 记录真实 coords 或 error.code;授权由你选择,不要求提供真实位置。
- 测试 Location unavailable,并与站点权限拒绝区分。
- 使用 Sensors 的 Orientation 预设,点击开始观察方向,对比 Device Mode 的视口。
- 应用针对性对照,再验证成功与三个失败分支,结束后恢复 Sensors 并停止监听。
设计成功、拒绝与不可用测试。新输入与两种故障随机;可能再次抽到同种,不保证轮流。
| 配置 | 根因 | 实际证据 | 针对性验证 |
|---|---|---|---|
| 配置1 | 业务把 latitude 与 longitude 颠倒 | 输入 31.23/121.47 却传入 121.47/31.23 | 保持坐标顺序,使用 Sensors 改位置并核对门店 |
| 配置2 | 定位错误没有清除加载状态和显示手动选择 | error.code=1/2/3 后仍处于 loading,手动选择不可用 | 分别触发拒绝、不可用和超时,显示手动选店 |
| 干扰项 | 只根据表面现象修改无关条件 | 没有保留条件与输入的一次截图 | 同时改变设备、数据与逻辑,只保留成功结果 |
- 先复现 附近门店选错城市,或者定位失败后一直显示加载。
- 对照实际证据:输入 31.23/121.47 却传入 121.47/31.23;或 error.code=1/2/3 后仍处于 loading,手动选择不可用
- 一次只改变对应原因:保持坐标顺序,使用 Sensors 改位置并核对门店;或 分别触发拒绝、不可用和超时,显示手动选店
本地夹具完成与原生 Sensors / 权限结果分列;不强制获取真实定位。 保持输入、数量、环境一致;完成故障与正常对照,选择一致证据;三轮引导和两配置挑战分别取证,原生步骤与本地结果分列。停止后清理本会话资源,再恢复浏览器设置。