写点什么

W3C 在 DOM 中引入“周边亮度”与“邻近”规范

  • 2013-01-18
  • 本文字数:1448 字

    阅读完需:约 5 分钟

传统上,Web 开发被限制在浏览器的范围内,仅能提供文档层面的操作及用户交互处理。W3C 通过引入一系列 API 来努力改变这一现状,使开发者能够与终端及周边外设进行交互。其中两类规范,“邻近事件”与“周边亮度事件”,已经进入草案最后征集意见的阶段。在接下来数月内会进入候选推荐阶段,届时一些实例也会逐渐出现。

通过JavaScript 和HTML5 的事件句柄( event handler ),“邻近事件”与“周边亮度事件”两项规范分别提供了从邻近传感器及光线传感器获取事件的方法。

在当前版本,“邻近事件”规范定义了两个接口:DeviceProximityEvent,向开发者提供关于设备与对象之间距离的信息;UserProximityEvent,向开发者提供有关周边物体侦测的、针对特定浏览器及平台的通知信息。DeviceProximityEvent 提供三项只读属性:

  • min – 最小感应距离,以厘米为单位
  • max – 最大感应距离,以厘米为单位
  • value –物体的邻近程度,以厘米为单位

该对象被传递到一个特殊的回调函数中,即 HTML5 规范所定义的事件句柄(event handler),作为该函数的参数。

复制代码
// Event Handler
deviceProximityHandler = function(event) {
document.writeln('min = ', event.min,
'max = ', event.max,
'value = ', event.value);
// e.g. => min = 0 max = 5 value = 5
document.write('
');
}
// Assigning the Event Handler to a Listener
window.addEventListener('deviceproximity', deviceProximityHandler);

UserProximityEvent 则相对不那么“让人兴奋”,它提供了布尔型属性,用于指示周边的邻近物体:

复制代码
userProximityHandler = function(event) {
document.write('near = ', event.near);
// e.g. => near = true/false
document.write('
');
}
window.addEventListener('userproximity', userProximityHandler);

在当前版本,“周边亮度事件”规范也定义了两个接口。 TheDeviceLightEvent 提供了一个值属性,以勒克斯(lux,照面单位)为单位表达周边亮度等级。LightLevelEvent 将周边亮度划分为“昏暗”(低于 50 勒克斯)、“正常”、“明亮”(高于 10000 勒克斯) 。

复制代码
deviceLightHandler = function(event) {
document.write('value = ', event.value); // e.g. => value = 10/100/1000
document.write('
');
}
window.addEventListener('devicelight', deviceLightHandler);

目前, DeviceProximityEvent UserProximityEvent ,以及 DeviceLightEvent 可在 Firefox 移动版的 Beta 版本(版本号 15 或更高)中使用。支持周边亮度感应的 Windows 版 Firefox Beta 版本也将很快发布。 请注意,草案规范的示例实现很可能在发展的过程中经历重大的改变。例如,Mozilla 的 DeviceLightEvent 实现所提供的对最大、最小亮度的访问,已从当前规范中剔除。

邻近事件”与“周边亮度事件”是当前已被细分出来的传感器API 规范中最成熟的分支,相关规范致力于定义对温度、压强、湿度、噪声等方面的读取。这些尝试覆盖的范围很大,开发者们可以预见,未来的DOM 将能够提供怎样的工具来与用户周边环境交互。开发者们被鼓励积极向这些API 提供反馈,特别是在最后征集意见的阶段。开发者可以通过订阅 Device APIs 工作组的公开邮件列表参与讨论。

查看英文原文 Ambient Light and Proximity Enter the DOM


感谢杨赛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-01-18 05:191026
用户头像

发布了 256 篇内容, 共 75.1 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

Redis缓存的主要异常及解决方案

京东科技开发者

数据库 缓存 缓存击穿 Redis 数据结构 企业号 1 月 PK 榜

IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)

JackJiang

网络编程 即时通讯 protobuf im开发

100万条数据解读2023银行APP用户体验升级方向

易观分析

金融 手机银行

如何打造一支有战斗力的团队?

石云升

极客时间 1月月更 技术领导力实战笔记

浅谈 Java 多版本发布

lambochen

在可观测性的启蒙与初试探--快速实现根因分析/业务大盘

Yestodorrow

架构 监控 可观测性

NFT元宇宙链游游戏项目系统开发技术解析(Demo)

I8O28578624

复习前端:JavaScript 字符串操作方法

devpoint

JavaScript 前端开发 字符串处理

不过是享受了互联网的十年红利期而已。

why技术

Java 程序员 大学生

C++缺省参数:学习成为一名优秀的舔狗

子夜的星

c++ 缺省参数 编程语言、 基础语法

高效学 C++|继承与组合

TiAmo

c++ 编程语言 继承

Pipy 0.90.0 发布

Flomesh

多线程并发 Pipy 流量管理

Mockito 助你实现真正的单元测试

lambochen

MySQL 主从备份实践

lambochen

CleanMyMac4.12.4最新版本有哪些新功能?

茶色酒

CleanMyMac CleanMyMac X2023

浅谈区块链项目开发技术(Solidity成熟语言)

I8O28578624

什么是NFT链游项目游戏系统开发技术(Demo)采用Solidity 智能合约系统开发方案

I8O28578624

北京有哪些java培训中心

小谷哥

web前端培训课程怎么选择

小谷哥

【译】5 Different Ways to Create Objects in Java

lambochen

小令动态丨令牌云获中国金融科技·最佳新锐企业奖

令牌云数字身份

创新大赛 金融科技创新

智能合约DAPP项目系统开发技术逻辑(dEOM)

I8O28578624

编译期多态

SkyFire

c++ 多态

参加前端培训班哪个好

小谷哥

大公司为什么禁止SpringBoot项目使用Tomcat?

程序员大彬

Java springboot

基于 std::variant 的运行时多态

SkyFire

c++ 多态

C++命名空间:别再因为命名冲突而烦恼了。

子夜的星

c++ 命名空间 C++基础

Java踩坑之三目运算符类型转换

lambochen

小令动态丨令牌云2022年度盘点

令牌云数字身份

盘点2022

一个小故事带你了解 Spring IoC

lambochen

佛萨奇2.0系统开发解析逻辑教程方案(成熟技术)

I8O28578624

W3C在DOM中引入“周边亮度”与“邻近”规范_JavaScript_Faraz Yashar_InfoQ精选文章