浏览器 API 之光照传感器

2017-02-17 23:41 #旧文章

本文翻译自 MDN,原文版本为 Aug 30, 2016, 4:10:41 AM

警告

这是一个实验性技术
鉴于这一个技术还没有成熟,请参考下面的兼容性列表。同时请注意该规范在未来可能会更新以致现在的语法不再适用。

通过光照事件可以使网页或应用感知到环境光强度的变化,并使其做出相应的动作,例如改变其 UI 的对比度。

光照事件

当光照传感器感知到一个新的亮度等级时,浏览器会得知这一信息。当浏览器收到这一信息后,浏览器就会发出一个带着这些信息的 DeviceLightEvent

这一事件可以通过 addEventListener 方法在 window 对象上捕捉到(事件名为 devicelight)。你也可以通过添加一个事件处理函数到 window.ondevicelight 属性上。

一旦捕捉到这一事件,可以通过 DeviceLightEvent.value 这一属性获得光照强度。以 lux 作为单位。

示例

window.addEventListener("devicelight", function (event) {
var html = document.getElementsByTagName("html")[0];
if (event.value < 50) {
html.classList.add("darklight");
html.classList.remove("brightlight");
} else {
html.classList.add("brightlight");
html.classList.remove("darklight");
}
});

规范

规范状态备注
Ambient Light Sensor草案原始定义

兼容性

桌面系统

特性ChromeFirefox (Gecko)IEOperaSafari
DeviceLightEvent不支持22.0 (22.0)1不支持不支持不支持
  1. devicelight 事件在 Firefox Mobile for Android(15.0)和 Firefox OS(B2G)中被实现。从 Gecko 22.0 (Firefox 22.0 / Thunderbird 22.0 / SeaMonkey 2.19)开始,在 Mac OS X 开始得到实现。Windows 7 上仍未实现。参见 bug 754199

手机系统

特性AndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
DeviceLightEvent不支持支持15.0 (15.0)1不支持不支持不支持

参考资料