Chrome 67中WebXR API无法使用的原因咨询(已开全部XR标识)
我来给你拆解下这个问题的核心原因,都是当年Chrome早期支持WebXR时踩过的坑:
硬件/模拟环境缺失
WebXR本质是为XR设备(VR头显、AR眼镜等)设计的,Chrome 67的WebXR还处于非常早期的实验阶段,既没有内置的设备模拟器,也对硬件支持要求很严格。你没连接实际的XR设备,自然会返回Uncaught (in promise) DOMException: No devices found.——哪怕开了flags,这个版本也没法凭空模拟出一个XR设备。API已经过时且未完善
你用的navigator.xr.requestDevice()是WebXR早期草案里的接口,后来这个API被废弃了,换成了navigator.xr.isSessionSupported()和navigator.xr.requestSession()。Chrome 67里的WebXR实现刚好处于新旧API过渡的阶段,旧接口的支持非常不稳定,甚至可能已经被悄悄移除了核心逻辑。Flags开启不代表功能完整
虽然你开了chrome://flags里的所有WebXR相关选项,但这些flag只是解锁了实验性支持的开关,不代表所有功能都能正常运行。Chrome 67的WebXR很多核心功能都还在开发中,比如设备模拟、会话管理这些关键模块都没做完,开了flag也只是能调用API,但没法实际运行。示例代码版本不兼容
你用的示例代码是基于正式版WebXR标准写的,而Chrome 67的WebXR还停留在早期草案阶段,API结构、调用逻辑完全不一样。比如现在的示例会先检查会话支持,再请求会话,但Chrome 67里的逻辑是先请求设备再创建会话,版本不匹配自然跑不起来。
如果真的要测试WebXR,建议直接升级到Chrome 79及以上版本——从这个版本开始,WebXR 1.0正式成为标准,不仅有完善的设备模拟功能,API也稳定下来了,你不用折腾旧版本的各种兼容性问题。
内容的提问来源于stack exchange,提问作者Dean Miller

