1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
---
title: Navigator.battery
slug: Web/API/Navigator/battery
translation_of: Web/API/Navigator/battery
---
<p>{{ ApiRef("Battery API") }}{{deprecated_header}}</p>
<p><strong>电池状态API</strong>,通常简称为电池API,该API能够让开发者访问用户系统的电池电量以及是否外接电源等电源状态信息,并且在电源状态发生变化时引发事件来开发者。开发者就可以在得知系统电量不足的时候降低你的网站上一些循环执行任务的频率,从而节约电量。或者在电量减少到某个级别的时候,自动保存页面上的一些数据,以防止用户的数据丢失。</p>
<div class="note">
<p>电池状态API曾经暴露在{{domxref("window.navigator")}}的<code>battery</code>属性上,但是现在<code>battery</code>属性已经被移除,请使用标准方法{{DOMxRef("Navigator.getBattery","Navigator.getBattery()")}}来代替,该方法返回一个包裹电池状态对象的{{JSxRef("Promise")}}。</p>
</div>
<h2 id="语法" name="语法">Syntax</h2>
<pre class="syntaxbox notranslate">var battery = navigator.battery;</pre>
<h2 id="属性">属性</h2>
<dl>
<dt><code>charging</code></dt>
<dd><strong>只读</strong>. 一个布尔值,表示了系统电池的充电状态.如果电池正在充电,则返回<code>true</code>,其他情况,比如无法获取系统电池的充电状态,或者系统不使用电池,或者电池不在充电,都返回<code>false</code>.</dd>
<dt><code>chargingTime</code></dt>
<dd><strong>只读</strong>. 一个整字,单位为秒.表示了电池还剩多长时间充满电.如果电池已经充满电了,则返回0.如果电池不在充电,或者无法获取到这个时间值,则返回正无穷大.</dd>
<dt><code>dischargingTime</code></dt>
<dd><strong>只读</strong>.一个数字,单位为秒.表示了电池中的电量还剩多长时间会消耗完毕.如果电池正在充电,或者无法获取到这个时间值,以及如果系统没有电池,则返回正无穷大.</dd>
<dt><code>level</code></dt>
<dd><strong>只读</strong>. 一个数字,单位为秒.表示了系统的电池的电量等级,从0到1.0.如果电量已经完全消耗完,则返回0,如果电量为充满状态,或者无法获取到这个等级值,以及如果系统没有电池,则返回1.0.</dd>
</dl>
<h2 id="事件">事件</h2>
<dl>
<dt><code>chargingchange</code></dt>
<dd>当<code>charging</code><code>属性值发生</code>改变时触发该事件.</dd>
<dt><code>chargingtimechange</code></dt>
<dd>当<code>chargingTime属性值发生</code>改变时触发该事件.</dd>
<dt><code>dischargingtimechange</code></dt>
<dd>当<code>dischargingTime</code>属性值发生改变时触发该事件.</dd>
<dt><code>levelchange</code></dt>
<dd>当<code>level属性值发生</code>改变时触发该事件.</dd>
</dl>
<h2 id="示例">示例</h2>
<p>查看<a class="external" href="http://dev.w3.org/2009/dap/system-info/battery-status.html#introduction">规范中的这个例子</a>.</p>
<pre class="brush: js notranslate">var battery = navigator.battery || navigator.mozBattery || navigator.webkitBattery;
function updateBatteryStatus() {
alert("Battery status: " + battery.level * 100 + " %");
if (battery.charging) {
alert("Battery is charging");
}
}
battery.addEventListener("chargingchange", updateBatteryStatus);
battery.addEventListener("levelchange", updateBatteryStatus);
updateBatteryStatus();
</pre>
<h2 id="规范">规范</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('Battery API')}}</td>
<td>{{Spec2('Battery API')}}</td>
<td>Initial specification.</td>
</tr>
</tbody>
</table>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
<p>{{Compat("api.Navigator.battery")}}</p>
<h2 id="相关链接">相关链接</h2>
<ul>
<li>{{DOMxRef("Navigator.getBattery","Navigator.getBattery()")}}</li>
<li><a href="/en-US/docs/Web/API/Battery_Status_API">Battery Status API</a></li>
<li><a class="external" href="http://hacks.mozilla.org/2012/02/using-the-battery-api-part-of-webapi/">Blog post - Using the Battery API</a></li>
<li><a class="external" href="http://davidwalsh.name/battery-api" title="http://davidwalsh.name/battery-api">David Walsh on the JavaScript Battery Api</a></li>
<li><a href="https://github.com/pstadler/battery.js" title="https://github.com/pstadler/battery.js">battery.js - a tiny cross-browser wrapper</a></li>
</ul>
|