Chrome 89 推出了具有安全限制的 WebHid API。
限制包括:
切换浏览器选项卡时,Javascript 无法接收 USB Hid 数据。
当用户打开选择 html 元素时,Javascript 无法接收 USB Hid 数据
.....更多在链接
Chromium 项目中有一个提交说The blocklist may be bypassed by passing allow_protected_reports=true when connecting to the devic
。
有没有办法设置allow_protected_reports=true
绕过 UI 上的这些限制,例如chrome://flags
?
相关链接: https ://web.dev/hid/#security-privacy
2021.10.28更新
MacOS BigSur 11.2.3
Chrome 版本 95.0.4638.54(官方构建)(x86_64)
为了重现限制:
Javascript cannot receive USB Hid data when user is opening select html element
<select>
<option> test </option>
</select>
device.addEventListener("inputreport", (e) => {
const data = e.data.buffer;
console.log(new Date(), "received data", data);
});
当用户单击“测试”选择元素将其打开时,它将停止接收数据。
Javascript cannot receive USB Hid data when browser tab switched
.
我现在无法每次在Mac+Chrome上重现它,device.addEventListener("inputreport",...)
当Tab切换时,我确实在简单的测试环境中通过API接收了HID设备数据。但我发现它在我的实际生产 React.js 应用程序中停止了,该应用程序运行更多的 javascript 和计时器 ( setInterval )。