たとえば、RTCPeerConnectionに似ています。これのためのAPIは、Firefox、Chromeで異なります。なぜapiはすべてのブラウザで異なる必要がありますか?
このコードスニペットは、そのAPIの相違点を修正するためのものです。それは、すべての主要な現代的なブラウザで動作するサイトを作成しようとする開発者の悩みをデモしています。 これを作成した人には本当に感謝しています。それは素晴らしい修正です。
var RTCPeerConnection = null;
var getUserMedia = null;
var attachMediaStream = null;
var reattachMediaStream = null;
var webrtcDetectedBrowser = null;
function trace(text) {
if (text[text.length - 1] == '\\') {
text = text.substring(0, text.length - 1);
}
console.log((performance.now()/1000).toFixed(3) + ": " + text);
}
if (navigator.mozGetUserMedia) {
console.log("This appears to be Firefox");
webrtcDetectedBrowser = "firefox";
RTCPeerConnection = mozRTCPeerConnection;
RTCSessionDescription = mozRTCSessionDescription;
RTCIceCandidate = mozRTCIceCandidate;
getUserMedia = navigator.mozGetUserMedia.bind(navigator);
attachMediaStream = function (element, stream) {
console.log("Attaching media stream");
element.mozSrcObject = stream;
element.play();
};
reattachMediaStream = function (to, from) {
console.log("Reattaching media stream");
to.mozSrcObject = from.mozSrcObject;
to.play();
};
MediaStream.prototype.getVideoTracks = function() {
return [];
};
MediaStream.prototype.getAudioTracks = function() {
return [];
};
} else if (navigator.webkitGetUserMedia) {
console.log("This appears to be Chrome");
webrtcDetectedBrowser = "chrome";
RTCPeerConnection = webkitRTCPeerConnection;
getUserMedia = navigator.webkitGetUserMedia.bind(navigator);
attachMediaStream = function (element, stream) {
if (typeof element.srcObject !== 'undefined') {
element.srcObject = stream;
} else
{
if (typeof element.mozSrcObject !== 'undefined') {
element.mozSrcObject = stream;
} else
{
if (typeof element.src !== 'undefined') {
element.src = URL.createObjectURL(stream);
} else {
console.log('Error attaching stream to element.');
}
}
}
};
reattachMediaStream = function (to, from) {
to.src = from.src;
};
if (!webkitMediaStream.prototype.getVideoTracks) {
webkitMediaStream.prototype.getVideoTracks = function() {
return this.videoTracks;
};
webkitMediaStream.prototype.getAudioTracks = function() {
return this.audioTracks;
};
}
if (!webkitRTCPeerConnection.prototype.getLocalStreams) {
webkitRTCPeerConnection.prototype.getLocalStreams = function() {
return this.localStreams;
};
webkitRTCPeerConnection.prototype.getRemoteStreams = function() {
return this.remoteStreams;
};
}
} else {
console.log("Browser does not appear to be WebRTC-capable");
}
なぜこれらのウェブブラウザの作成者は非常に厄介でなければならないのですか?私は本当にそれが笑を理解できないのですか?
これは十分に良いです。私はwebsocketがほぼ安定していると思います。私はこれらすべての新しい仕様が好きです。彼らはチャットサイトのようなものに最適です! –