核心要点
deviceproximity
提供设备与附近物体之间距离的信息;userproximity
指定设备是否检测到附近物体。可以监听并响应这些事件。移动设备已成为生活中不可或缺的一部分,适度使用它们能帮助我们完成许多日常任务,例如查询公交信息、查找最近的地铁站或意大利餐厅等等。
移动设备也为 Web 开发者开辟了新的天地。为了满足移动设备的使用需求,一系列专门为其设计的 API 应运而生。
在过去的几个月里,我已经向大家介绍了一些 API,例如 Web Notifications API 和 Web Speech API。本文将介绍一个简单但实用的 API:近距离 API。
简介
近距离 API 定义了事件,这些事件提供关于设备与物体之间距离的信息,这些信息由近距离传感器测量得出。该 API 最初是传感器 API 的一部分,后来被拆分出来成为一个独立的 API。近距离 API 的规范被认为是稳定的,因为它在 2013 年 10 月 1 日达到了 W3C 候选推荐标准。
如果您使用过智能手机,那么您一定已经体验过这个 API 的功能。
举个例子:想想您上次打电话的过程。您解锁智能手机,输入要拨打的号码,然后点击“呼叫”按钮。完成之后,您将手机靠近耳朵,这时神奇的事情发生了,屏幕关闭了。
许多智能手机都具备此功能以节省电池电量,而这项功能正是由近距离 API 提供支持的。当您将移动设备靠近耳朵时,近距离传感器会触发一个事件,该事件会被您的智能手机监听,从而关闭屏幕。
在 Web 上,我们还有其他有趣的用例。您是否曾在开车时使用 Web 服务收听音乐,然后需要暂停播放?
手动暂停播放器有多麻烦?答案一定是“非常麻烦!”。借助此 API,Web 开发者现在可以添加一个功能,如果物体(在本例中为手)靠近设备,播放器将暂停。
现在我们知道了近距离 API 是什么以及它的用例,我们可以深入了解它公开的事件。
事件
近距离 API 定义了两个事件,我们可以根据物体的接近程度来监听和响应这两个事件。第一个事件是 deviceproximity
,它提供有关主机设备与附近物体之间距离的信息。第二个事件是 userproximity
,它指定设备是否检测到附近物体。这两个事件都在 window
对象上触发,因此要监听它们,我们需要向其附加一个处理程序。
下面是一个如何附加 deviceproximity
事件处理程序的示例:
window.addEventListener('deviceproximity', function(event) { console.log('An object is ' + event.value + ' centimeters far away'); });
附加的处理程序接收一个对象作为其第一个参数,其中包含我们需要的信息。deviceproximity
事件传递的对象提供三个属性:value
、min
和 max
。value
是一个数字,表示设备与物体之间的距离(以厘米为单位)。min
和 max
属性描述传感器可以检测到的最小和最大距离(以厘米为单位)。userproximity
事件传递的对象公开了 near
属性。这是一个布尔值,它指定物体是否足够靠近设备(true)或不是(false)。在这种情况下,“足够近”意味着物体在特定设备的可检测范围内。
浏览器兼容性
目前,近距离 API 的支持度非常低。唯一支持它的浏览器是 Firefox(桌面版和移动版,从 15 版开始)。考虑到它已经达到了 W3C 候选推荐标准,这一点令人惊讶,但目前就是这样。
由于此 API 仅在 Firefox 中实现,因此了解如何测试其支持至关重要。我们可以使用一种众所周知的方法来实现,您在处理其他 API 时可能已经遇到过这种方法。此方法如下所示:
if ('ondeviceproximity' in window) { // API supported. Don't get too close, I can feel you } else { // API not supported }
如上所示,我们可以测试 userproximity
事件的支持情况。此时,我们知道了近距离 API 是什么以及它公开的事件。为了完成我们的旅程,我们将开发一个简单的演示来查看它的实际效果。
(后续内容,例如Demo和结论部分,由于篇幅限制,建议您参考原文进行阅读和理解。 我已对原文进行了精简和改写,保留了核心信息和图片。)
以上是引入接近API的详细内容。更多信息请关注PHP中文网其他相关文章!