blob: f09f219b51ae41e3ab22b4271b179ade50b5f19a (
plain)
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
|
---
title: Improving compatibility using WebRTC adapter.js
slug: Web/API/WebRTC_API/adapter.js
translation_of: Web/API/WebRTC_API/adapter.js
---
<p>{{WebRTCSidebar}}</p>
<p>虽然 WebRTC <a href="http://www.w3.org/TR/webrtc/">规范</a>已经相对健全稳固了,但是并不是所有的浏览器都实现了它所有的功能。除此之外。有些浏览器需要在一些或者所有的 WebRTC API上添加前缀才能正常使用。尽管你可以自己写代码解决这种问题,但是还有一个比较简单的方法。WebRTC 组织在github上提供了一个 <a href="https://github.com/webrtc/adapter/">WebRTC适配器</a>(WebRTC adapter)来解决在不同浏览器上实现 WebRTC 的兼容性问题。这个适配器是一个JavaScript垫片,它可以让你根据 WebRTC 规范描述的那样去写代码,在所有支持 WebRTC的浏览器中不用去写前缀或者其他兼容性解决方法。</p>
<div class="note">
<p>注意: 由于WebRTC和支持的浏览器中的API的功能和命名在不断变动,推荐使用这个适配器。</p>
</div>
<p>这个 adapter(适配器)是基于BSD开源协议的。</p>
<h2 id="adapter.js_是干什么的">adapter.js 是干什么的</h2>
<p>对于每个支持 WebRTC 的浏览器的各个版本,adapter.js添加必要的polyfills(填充),使用没有前缀的API,以及使用一些修改让浏览器可以运行根据 WebRTC 规范写的代码。</p>
<p>举个例子,在火狐浏览器版本号38之前,adapter 增加了{{domxref("RTCPeerConnection.urls")}}属性;火狐浏览器并不原生的支持这个属性直到38版本,然而在谷歌浏览器中如果API不支持{{jsxref("Promise")}} 就添加支持。这只是一些例子;当然还有其他措施来实现这种统一API。</p>
<p>WebRTC adapter现在支持火狐、谷歌、和Edge浏览器</p>
<h2 id="使用adapter.js">使用adapter.js</h2>
<p>要使用 adapter.js,你需要在使用 WebRTC APIs 的每个页面都引入 adapter.js :</p>
<ol>
<li>从GitHub上下载一个最新<a href="https://github.com/webrtc/adapter/tree/master/release">adapter.js</a>的副本。</li>
<li>在你的网站文件目录里添加这个文件(比如在放在scripts目录下)。</li>
<li>在你的项目里包含这个文件:<script src="adapter.js"></script></li>
<li>写代码,按照 WebRTC APIs 规范去写,知道你的代码应该在所有浏览器上工作。</li>
<li>注意,即使有一个像这样优秀的 adapter 并不意味着你不需要在不同的浏览器上测试代码(以及在同一个浏览器中的不同版本)。</li>
</ol>
<h2 id="相关链接">相关链接</h2>
<ul>
<li><a href="https://github.com/webrtc/adapter">The WebRTC adapter project on GitHub</a></li>
</ul>
|