2

WebRTC 数据通道仅在 Firefox nightly 中有效。如何在客户端检查它?

代码如下所示;

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); 

 var ffversion=new Number(RegExp.$1) // capture x.x portion and store as a number

 if (ffversion>=5)

  document.write("You're using FF 5.x or above")

 else if (ffversion>=4)

  document.write("You're using FF 4.x or above")

 else if (ffversion>=3)

  document.write("You're using FF 3.x or above")

 else if (ffversion>=2)

  document.write("You're using FF 2.x")

 else if (ffversion>=1)

  document.write("You're using FF 1.x")
}

else
 document.write("n/a")
4

8 回答 8

7

您可以简单地测试浏览器当前是否支持您将要使用的功能。例如:

if (!window.mozRTCPeerConnection)
    // error, browser doesn't support it

如果你有兴趣,这里有一篇有趣的文章:你好 Chrome,它是 Firefox 来电!

您基本上可以在 Chrome 中实现相同的功能,只需使用webkit前缀而不是moz.

于 2013-02-08T14:18:07.383 回答
5

RTCDataChannel现在在simpl.info/dc上有一个 Chrome演示。

这不是很健壮或不完整,但您可以创建一个webkitRTCPeerConnection对象,然后检查它是否有createDataChannel成员:

try { // or if (webkitRTCPeerConnection) {...}
  var pc = new webkitRTCPeerConnection(null);
  if (pc && pc.createDataChannel) {
    var dc = pc.createDataChannel("sendDataChannel", {reliable: false});
    if (!!dc) {
      // doSomething()
    } 
  }
} catch (e) {
  // try some other instantiation 
}
于 2013-02-09T09:46:26.937 回答
2

检查webrtcsupport包。它似乎是跨浏览器(Chrome & FF)。 https://www.npmjs.org/package/webrtcsupport

如果你不想使用 NPM 包,可以在这里找到主要逻辑。 https://github.com/HenrikJoreteg/webrtcsupport/blob/master/index-browser.js

于 2014-10-13T09:07:00.510 回答
2

使用 JavaScript

var prefix;
var version;
if (window.mozRTCPeerConnection || navigator.mozGetUserMedia) {
  prefix = 'moz';
  version = parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1], 10);
} else if (window.webkitRTCPeerConnection || navigator.webkitGetUserMedia) {
  prefix = 'webkit';
  version = navigator.userAgent.match(/Chrom(e|ium)/) && parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)[2], 10);
}

if(prefix == 'moz' || prefix == 'webkit' && version > 41){
  console.log("Browser Support WebRTC")
} else {
  console.log("This Browser Not Support WebRTC")
}
于 2015-12-30T10:56:53.180 回答
0

我刚刚想通了。感谢你的帮助。 http://mozilla.github.com/webrtc-landing/

于 2013-02-08T15:00:02.413 回答
0

另一个检查 WebRTC 支持的包是 DetectRTC https://github.com/muaz-khan/DetectRTC

于 2015-07-20T20:02:34.220 回答
0

上面的答案是不对的。

if (window.RTCDataChannel) {
    // the browser support dataChannel
} else {
   // the browser does not support dataChannel
}

如果浏览器支持 RTCPeerConnection,并不代表也支持 RTCDataChannel。比如 Edge,createDataChannelon instance ofRTCPeerConnection会抛出异常。

于 2019-05-24T08:13:35.070 回答
0

很惊讶没有人提到检查原型。

您可以通过执行以下操作检查 createDataChannel 是否存在:

if (!window.RTCPeerConnection.prototype.createDataChannel) {
    // Data Channels not supported
}
于 2020-06-12T09:39:25.260 回答