使用JavaScript访问设备硬件的新标准

WebHID,WebNFC和WebUSB开辟了新的途径,能够与用户用于Web应用程序的设备硬件进行交互。web

你是否遇到过须要访问用户的设备硬件,并只为该功能实现一个桌面应用程序?你并不孤单。直到最近,实现上述目的的方式还很牵强和麻烦。然而,随着最近Chrome DevTools的更新,使用JavaScript与硬件对话已经成为现实。chrome

所以,在本文中,我将介绍三个新的JavaScript API,即WebHIDWebNFCWebUSB可用于设备硬件访问。让咱们分别看一下这些技术。浏览器

1.什么是WebHID?

在将HID(人机界面设备)集成到软件中时,开发人员面临的一个主要问题是,软件应适应大量的品种;旧设备、新设备、常见的型号、不常见的型号等。安全

WebHID经过提供一个在JavaScript中实现设备特定逻辑的API来解决这个问题。

基本上,若是你想用任天堂Switch的Joy-Con控制器玩Chrome Dino🦖离线游戏,WebHID使你有可能作到这一点。很酷,不是吗?网络

你能够使用下面的代码片断来了解是否支持WebHID。框架

if ("hid" in navigator) { /* The WebHID API is supported. */ }

应用程序实施WebHID链接设备后,将显示如下提示。异步

你须要作的是,选择正确的设备并点击链接。就这么简单!网站

WebHID API是异步的。所以,在等待新设备链接或输入时,它不会阻止UI。

安全注意事项

我相信这是在发现WebHID能作什么以后想到的事情。spa

该API的开发采用了《控制对强大的网络平台功能的访问》中定义的核心原则,包括用户控制、透明度和人体工程学。此外,一次仅容许一个HID设备链接。调试

此外,Chrome DevTools经过提供浏览器所链接的设备的日志,使其更容易调试与设备的链接。这能够在chrome://device-log(Chrome的一个内部页面)查看。

浏览器兼容性

WebHID目前在桌面上被Chrome和Edge支持。

接下来让咱们看一下WebNFC。

2.什么是WebNFC?

我相信,你之前必定遇到过NFC(近场通讯)这个缩写。

有了WebNFC,如今你能够读取或写入NFC标签,当它在你的设备范围内。这是经过NDEF (NFC数据交换格式)完成的,它是由NFC标签格式支持的。

使用WebNFC

比方说,你须要管理你店里的库存。你能够用WebNFC创建一个库存管理网站,它能够将数据读/写到你库存的NFC标签上。

可能性是无穷的。这是一个将许多事情自动化的机会,使咱们的平常工做更有效率。

与WebHID类似,你能够使用下面的代码片断检查WebNFC支持。

if ('NDEFReader' in window) { /* Scan and write NFC tags */ }

安全注意事项

做为一项安全预防措施,Web NFC仅适用于顶级框架和安全浏览环境(仅HTTPS)。

若是实现WebNFC的网页消失或不可见,全部与NFC标签的链接将被暂停。当页面再次变得可见时,这些将被恢复。页面可见性API(Page Visibility API)帮助你识别NFC操做的链接状态。

浏览器兼容性

到目前为止,Chrome Android仅支持WebNFC。

接下来,让咱们一块儿看看WebUSB API。

3.什么是WebUSB?

WebUSB API容许你使用JavaScript与USB端口通讯,从Chrome 61开始可用。

然而,你可能会想,咱们如何访问每一个USB设备的相关驱动程序,对吗?在WebHID API的支持下,它容许硬件制造商为其硬件设备创建跨平台的JavaScript SDK。

与上面讨论的API相似,对WebUSB的支持能够用下面的代码片段来检测。

if ("usb" in navigator) { /* The WebUSB API is supported. */ }

安全

在安全方面有许多控制措施来保护未经受权的USB访问,并且它只在支持HTTPS的安全上下文中工做,以保护传输中的任何数据。此外,标准的浏览器赞成程序是用来请求和授予访问权的。

调试WebUSB API相关的任务也能够经过内部的chrome://device-log页面进行,该页面列出全部链接的USB设备和相关的事件。

浏览器兼容性

WebUSB获得了Chrome浏览器、桌面上的Edge和安卓设备上的Chrome的支持。

有关WebUSB API的更多详细信息,能够参考Web上的访问USB设备

总结

不管是你的网站与你的硬件互动,仍是你的硬件能与网络应用互动,这都是一个共赢的局面,由于他们不须要再安装特殊的驱动或软件来链接。

在我看来,这是一个很是酷的新功能,将使生活变得更容易。