是否可以在javascript中检测电池供电的设备?
问题描述:
一位客户最近要求我在我们的网站上实施幻灯片。我担心在主页上不断动画的图片转换会挂住大多数移动设备的处理器,所以我想禁用自动前进以延长电池寿命。有没有办法做到这一点,而不尝试检测用户代理?是否可以在javascript中检测电池供电的设备?
我已经看到有一个电池状态API起草here,但我不知道它是多么完整,或者哪些浏览器已经实现它。
答
实际上确定电池是相当困难的,可能涉及各种权限问题。
尝试只执行一小段代码并检查花费的时间。选择一个中断,如果代码执行得太慢,请关闭转换/动画/自动遵从。这将不仅仅是电池设备。任何太慢都会得到非动画版本。优雅地退化。
答
另一个老话题了,但仍然具有现实意义 - 我现在检查设备是否有运动传感器,而不是许多笔记本电脑做的,但所有的现代智能手机和平板电脑做 -
- 使笔记本电脑用户可以用稍微电池使用LivejQuery的:
if (window.DeviceOrientationEvent) {
$(window).one("devicemotion", function(event) {
if (event.originalEvent.acceleration
&& event.originalEvent.acceleration.x !== null) { // Chrome fakes it on desktop
isMobile = true;
}
});
}
普通的JavaScript:
if (window.DeviceOrientationEvent) {
window.ondevicemotion = function(event) {
if (event.acceleration
&& event.acceleration.x !== null) { // Chrome fakes it on desktop
window.ondevicemotion = null;
isMobile = true;
}
};
}
答
,现在您可以使用此API:http://davidwalsh.name/javascript-battery-api
navigator.getBattery().then(function(result) {});
+0
这本身并没有揭示电池操作。所有桌面浏览器也将从该API返回电池管理器。你需要做的是检测'!batteryManager.charging'状态。 – 2015-04-08 20:22:45
从它的外观来看,没有多少浏览器支持它,因为它只是在* November *中显示。 – 2012-03-06 16:49:16
执行强烈的数学运算可能会挂钩处理器,但使用JavaScript对某些图像进行动画处理应该很好。我认为你担心错误的事情。 – j08691 2012-03-06 16:57:45