如何在客户端使用JavaScript检查webRTC数据通道兼容性?

时间:2013-02-08 14:09:01

标签: javascript html5 webrtc

WebRTC数据通道仅在Firefox中使用。我如何在客户端进行检查?

代码如下所示;

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")

8 个答案:

答案 0 :(得分:5)

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

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

如果您有兴趣,可以在这里找到一篇有趣的文章:Hello Chrome, it’s Firefox calling!

您基本上只能使用webkit前缀代替moz在Chrome中实现相同的功能。

答案 1 :(得分:4)

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

这不是很强大或完整,但您可以创建一个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 
}

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

使用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")
}

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

最不正确的答案。

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

如果浏览器支持RTCPeerConnection,则并不意味着也支持RTCDataChannel。例如Edge,createDataChannel实例上的RTCPeerConnection会引发异常。

答案 7 :(得分:0)

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

您可以通过以下方法检查createDataChannel是否存在:

if (!window.RTCPeerConnection.prototype.createDataChannel) {
    // Data Channels not supported
}