2015-11-04 82 views
1

/!\ window.navigator.battery IS STRONGLY DISCOURAGED的使用和這個問題現在還沒有值得一試THANK YOU /!\獲取電池級JavaScript

我想要得到當前系統的電池電量。下面是我打算讓輸出:

如果桌面(無電池) 電池電量:100%

如果筆記本 電池電量:XXX%(取決於等級)

所以我嘗試了window.navigator.battery在我的JSFiddle的Mozilla基金會的片段。

問題:運行Chrome 20+版本(目前爲46),我仍然在控制檯上的錯誤:

Uncaught TypeError: Cannot read property 'addEventListener' of undefined

所以我的理解與所謂電池級別實例化對象battery是什麼都不返回

有人想通了嗎?

當這段代碼工作時,我的算法的要點是定義用戶無法執行的有關剩餘電池電量的操作。例如,我不希望用戶進行沉重的操作,可能會將他的電池電量降至臨界點,並使關鍵操作失敗。

+1

請注意,你的鏈接到的jsfiddle導致的主頁,而不是一個具體的小提琴證明的問題。 –

+0

##鉻60:## 輸入> window.navigator.battery ---------- 輸出<未定義 –

+0

正如它過時,我將提及它在此之上問題,謝謝。 –

回答

5

English version of that page

This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Do not use it in old or new projects. Pages or Web apps using it may break at any time.

The battery property is deprecated and has been replaced by a Navigator.getBattery() method returning a battery Promise . Its support is still partial though.

+0

我剛剛發現法文文檔不是最新的,因爲我將URL切換到了en,而且我實際上看到了depecrated消息錯誤。 –

1

要回答我的問題,這要歸功於該文檔的幫助,@Quentin提供給我,我達到了我的目標使用BatteryManager.level功能的承諾Navigator.getBattery()。給出工作片段的鏈接可以在這裏找到:https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager/level

在控制檯(F12)的電池剩餘價值(我無法驗證在桌面的輸出中還,所以請糾正我,如果它不是在桌面上工作)以下的jsfiddle顯示:

JSFiddle

的JavaScript

navigator.getBattery().then(function(battery) { 

    var level = battery.level; 

    console.log(level); 
}); 
0

event.target.level是在事件處理程序的電平值。

navigator.getBattery().then((battery) => { 

    battery.ondischargingtimechange = (event) => { 
     console.warn(`Discharging : `, event.target.level) 
    }; 

    battery.onchargingtimechange = (event) => { 
     console.info(`Charging : `, event.target.level) ; 
    }; 
}); 

enter image description here

+0

這個答案與@Zeratops的[答案](http://stackoverflow.com/a/33521469/215552)有什麼不同? –

+0

這是一個** REALTIME **輸出,因爲使用**事件處理程序** @MikeMcCaughan –

+0

你有任何JSFiddle來測試它@AbdennourTOUMI嗎? –