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")
答案 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
}