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
|
---
title: MediaSession.setActionHandler()
slug: Web/API/MediaSession/setActionHandler
translation_of: Web/API/MediaSession/setActionHandler
---
<p>{{APIRef("Media Session API")}}{{SeeCompatTable}}</p>
<p>{{domxref("MediaSession")}} 接口的属性 <strong><code>setActionHandler()</code></strong> 为media session动作设置一个监听器。这些动作让网页程序在用户操作设备的内置物理或屏上媒体控制项时收到消息,例如播放、停止或搜寻按钮。</p>
<h2 id="语法">语法</h2>
<pre class="syntaxbox">navigator.mediaSession.setActionHandler(<em>type</em>, <em>callback</em>)</pre>
<h3 id="参数">参数</h3>
<dl>
<dt><code>type</code></dt>
<dd>一个提供要监听的动作类型的 {{domxref("DOMString")}} 。它可以是 <code>play</code>、<code>pause</code>、<code>seekbackward</code>、<code>seekforward</code>、<code>previoustrack</code> 或 <code>nexttrack</code>。</dd>
<dt><code>callback</code></dt>
<dd>一个在指定动作被调用时要调用的方法。回调方法不会收到参数,并且不应该返回值。</dd>
</dl>
<h3 id="返回值">返回值</h3>
<p><code>undefined</code>。</p>
<h2 id="使用说明">使用说明</h2>
<p>要移除一个已经存在的监听器,再调用一次 <code>setActionHandler()</code> ,将 <code>null</code> 作为回调方法。</p>
<h2 id="示例">示例</h2>
<p>下面的示例创建一个新的media session并且为它添加监听器(不做任何事情)。</p>
<pre class="brush: js">if ('mediaSession' in navigator){
navigator.mediaSession.metadata = new MediaMetadata({
title: "播客音乐名字",
artist: "播客主持人",
album: "播客名字",
artwork: [{src: "podcast.jpg"}]
});
navigator.mediaSession.setActionHandler('play', function() {});
navigator.mediaSession.setActionHandler('pause', function() {});
navigator.mediaSession.setActionHandler('seekbackward', function() {});
navigator.mediaSession.setActionHandler('seekforward', function() {});
navigator.mediaSession.setActionHandler('previoustrack', function() {});
navigator.mediaSession.setActionHandler('nexttrack', function() {});
}
</pre>
<p>这个示例使用了适当的监听器来允许在不同的方向搜寻正在播放的媒体。</p>
<pre class="brush: js">let skipTime = 10; // 要跳过的秒数
navigator.mediaSession.setActionHandler('seekbackward', evt => {
// 用户点击了“向后搜寻”的媒体按钮
audio.currentTime = Math.max(audio.currentTime - skipTime, 0);
});
navigator.mediaSession.setActionHandler('seekforward', evt => {
// 用户点击了“向前搜寻”的媒体按钮
audio.currentTime = Math.min(audio.currentTime + skipTime,
audio.duration);
});</pre>
<p>要移除一个监听器,将它设为null。</p>
<pre class="brush: js">navigator.mediaSession.setActionHandler('nexttrack', null);</pre>
<h2 id="技术指标">技术指标</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">技术指标</th>
<th scope="col">状态</th>
<th scope="col">注释</th>
</tr>
<tr>
<td>{{SpecName('Media Session','#dom-mediasession-setactionhandler','MediaSession.setActionHandler()')}}</td>
<td>{{Spec2('Media Session')}}</td>
<td>初始定义。</td>
</tr>
</tbody>
</table>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
<div>
<div class="hidden">在这个页面上的兼容性表格是从结构数据生成的。如果你想要贡献数据,看看 <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> 并且向我们发起一个Pull Request</div>
<p>{{Compat("api.MediaSession.setActionHandler")}}</p>
</div>
|