写点什么

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:19955
用户头像

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

关注

评论

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

Hero动画应用之列表详情页切换

岛上码农

flutter ios 前端 安卓 移动端开发

【架构设计】你真的理解软件设计中的SOLID原则吗?

JAVA旭阳

Java 架构

tinyrpc源码阅读

骑牛上青山

golang 源码 RPC

一个比一个牛皮的5个杨辉三角特性!

风铃架构日知录

Java 程序员 算法 IT 杨辉三角

EasyRcovery软件最新版本V15电脑版安装包下载

茶色酒

EasyRcovery2023 EasyRcovery

总结一下经典机器学习算法

风铃架构日知录

Java 程序人生 算法 后端 IT

详解ThreadLocal

threedayman

读懂深度学习,走进“深度学习+”阶段

白洞计划

【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

No8g攻城狮

java; 开发语言 语言 & 开发 Java’

如何破越发展 to B 市场亏损越多问题?

风铃架构日知录

互联网 程序人生 后端 IT tob产品

模块9毕业设计项目

冷夫冲

架构设计实战

Pytorch 基础-tensor 数据结构

嵌入式视觉

Tensor ndarray 张量的基本操作 view函数 reshape

第四周作业-千万级学生系统课程存储设计

不爱学习的程序猿

非常实用的代码阅读策略!

风铃架构日知录

Java 程序员 后端 IT 代码

Tapdata 杨庆麟:实时数据如何赋能制造业,实现业务卓越与持续发展?

tapdata

Hive的条件函数与日期函数汇总

Steven

EasyRecovery2024永久版手机数据恢复软件

茶色酒

EasyRecovery EasyRecovery15 easyrecovery2023

【深入浅出Seata原理及实战】「入门基础专题」探索Seata服务的AT模式下的分布式开发实战指南(2)

洛神灬殇

分布式事务 分布式架构 Alibaba SpringCloud Alibaba

小兔子在终端给大家拜年啦

陈明勇

Go golang 后端

2023-01-13:joxit/docker-registry-ui是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

福大大架构师每日一题

k8s k3s 福大大

设计千万级学生管理系统的考试试卷存储方案 - 模块四

Geek_e5f2e5

Alluxio 2022技术干货年终大赏

Alluxio

大数据 分布式 案例 Alluxio 数据编排

【Java基础】Java8 使用 stream().sorted()对List集合进行排序

No8g攻城狮

java; 开发语言 语言 & 开发 Java’

WEB开发人员应该知道 10 个 Docker 命令

devpoint

Docker 前端开发 docker image Docker 镜像

photozoompro2023下载激活教程

茶色酒

PhotoZoom photozoompro

【Redis实战专题】「性能监控系列」全方位探索Redis的性能监控以及优化指南

洛神灬殇

redis监控 Redis优化 redis性能

David Murray 加入 VeraViews 担任需求总监

鳄鱼视界

算力狂热时代的冷静之道:宁畅总裁秦晓宁分享企业的算力最优解

脑极体

算力 东数西算 算力网络

【架构设计】你真的理解软件设计中的SOLID原则吗?

小小怪下士

Java 程序员 架构设计

SAP 交货单与HU指派关系数据不一致问题的解决方案

SAP虾客

SAP 公司间STO 外向交货单 HU DEBUG改表

Tapdata Cloud 场景通关系列:将数据导入阿里云 Tablestore,获得毫秒级在线查询和检索能力

tapdata

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