Battery Status API
The Battery Status API, often referred to as the Battery API, provides information about the system's battery charge level and lets you be notified by events that are sent when the battery level or charging status changes.
Warning: This API has been deprecated and removed from most modern browsers (like Firefox and WebKit-based browsers) due to privacy concerns regarding fingerprinting. It may still work in some Chromium-based browsers (Chrome, Edge) or specific environments (Electron, IoT), but it should not be relied upon for general web development.
1. Accessing Battery Info
The entry point is navigator.getBattery(), which returns a Promise that resolves to a BatteryManager object.
if ('getBattery' in navigator) {
navigator.getBattery().then((battery) => {
console.log("Battery charging? " + (battery.charging ? "Yes" : "No"));
console.log("Battery level: " + battery.level * 100 + "%");
console.log("Charging time: " + battery.chargingTime + " seconds");
console.log("Discharging time: " + battery.dischargingTime + " seconds");
});
} else {
console.log("Battery Status API is not supported.");
}
2. Properties
The BatteryManager interface provides read-only properties:
charging: A Boolean indicating whether the battery is currently charging.level: A number between 0.0 and 1.0 indicating the charge level.chargingTime: Time in seconds until fully charged (or 0 if full, Infinity if not charging).dischargingTime: Time in seconds until empty (or Infinity if charging).
3. Events
You can listen for changes in the battery status.
navigator.getBattery().then((battery) => {
battery.addEventListener('chargingchange', () => {
console.log("Charging status changed: " + battery.charging);
});
battery.addEventListener('levelchange', () => {
console.log("Level changed: " + battery.level);
});
battery.addEventListener('chargingtimechange', () => {
console.log("Charging time changed: " + battery.chargingTime);
});
battery.addEventListener('dischargingtimechange', () => {
console.log("Discharging time changed: " + battery.dischargingTime);
});
});
programming/javascript/vanilla/javascript programming/javascript/vanilla/events programming/javascript/vanilla/promises-async-await