是否可以在javascript中检测电池供电的设备?

时间:2012-03-06 16:48:22

标签: javascript browser-feature-detection

一位客户最近要我在我们的网站上实施幻灯片。我担心在主页上不断动画画面转换将会固定大多数移动设备的处理器,所以我想禁用自动前进以保持电池寿命。有没有办法在不尝试检测用户代理的情况下执行此操作?

我已经看到有一个电池状态API起草here,但我不知道它有多完整,或者哪些浏览器已经实现了它。

3 个答案:

答案 0 :(得分:2)

实际上确定电池会非常困难并且可能涉及各种权限问题。

尝试执行一小段代码并检查所花费的时间。选择一个截止值,如果代码执行得太慢,请关闭过渡/动画/自动执行。这将不仅仅是电池设备;任何太慢的东西都会得到没有动画的版本。优雅地降级。

答案 1 :(得分:2)

现在,您可以使用此API:http://davidwalsh.name/javascript-battery-api

navigator.getBattery().then(function(result) {});

答案 2 :(得分:1)

另一个老话题,但仍然相关 - 我现在检查设备是否有运动传感器,不是很多笔记本电脑,但所有现代智能手机和平板电脑都有 - 所以笔记本电脑用户可以使用更多的电池 -

jQuery的:

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;
        }
    };
}