In wp.media.mixin
, add ua
and a compat
map to separate and clarify browser detection and support. Leverage Underscore list iterators in isCompatible()
.
See #27389. git-svn-id: https://develop.svn.wordpress.org/trunk@27542 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
9e6f811c2b
commit
f2164771a7
@ -307,69 +307,88 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
ua: {
|
||||||
|
is : function (browser) {
|
||||||
|
var passes = false, ua = window.navigator.userAgent;
|
||||||
|
|
||||||
|
switch ( browser ) {
|
||||||
|
case 'oldie':
|
||||||
|
passes = ua.match(/MSIE [6-8]/gi) !== null;
|
||||||
|
break;
|
||||||
|
case 'ie':
|
||||||
|
passes = ua.match(/MSIE/gi) !== null;
|
||||||
|
break;
|
||||||
|
case 'ff':
|
||||||
|
passes = ua.match(/firefox/gi) !== null;
|
||||||
|
break;
|
||||||
|
case 'opera':
|
||||||
|
passes = ua.match(/OPR/) !== null;
|
||||||
|
break;
|
||||||
|
case 'safari':
|
||||||
|
passes = ua.match(/safari/gi) !== null && ua.match(/chrome/gi) === null;
|
||||||
|
break;
|
||||||
|
case 'chrome':
|
||||||
|
passes = ua.match(/safari/gi) && ua.match(/chrome/gi) !== null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return passes;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
compat :{
|
||||||
|
'opera' : {
|
||||||
|
audio: ['ogg', 'wav'],
|
||||||
|
video: ['ogg', 'webm']
|
||||||
|
},
|
||||||
|
'chrome' : {
|
||||||
|
audio: ['ogg', 'mpeg', 'x-ms-wma'],
|
||||||
|
video: ['ogg', 'webm', 'mp4', 'm4v', 'mpeg']
|
||||||
|
},
|
||||||
|
'ff' : {
|
||||||
|
audio: ['ogg', 'mpeg'],
|
||||||
|
video: ['ogg', 'webm']
|
||||||
|
},
|
||||||
|
'safari' : {
|
||||||
|
audio: ['mpeg', 'wav'],
|
||||||
|
video: ['mp4', 'm4v', 'mpeg', 'x-ms-wmv', 'quicktime']
|
||||||
|
},
|
||||||
|
'ie' : {
|
||||||
|
audio: ['mpeg'],
|
||||||
|
video: ['mp4', 'm4v', 'mpeg']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
isCompatible: function ( media ) {
|
isCompatible: function ( media ) {
|
||||||
if ( ! media.find( 'source' ).length ) {
|
if ( ! media.find( 'source' ).length ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var ua = window.navigator.userAgent.toLowerCase(),
|
var ua = this.ua, test = false, found = false, sources;
|
||||||
ff, chrome, opera, safari,
|
|
||||||
isIE = ua.match(/MSIE/gi) !== null,
|
|
||||||
isOpera = window.navigator.userAgent.match(/OPR/) !== null,
|
|
||||||
isOldIE = ua.match(/MSIE [6-8]/gi) !== null,
|
|
||||||
isChrome = ua.match(/safari/gi) && ua.match(/chrome/gi) !== null,
|
|
||||||
isFirefox = ua.match(/firefox/gi) !== null,
|
|
||||||
isSafari = ua.match(/safari/gi) !== null && ua.match(/chrome/gi) === null;
|
|
||||||
|
|
||||||
if ( isOldIE || isIE ) {
|
if ( ua.is( 'oldIE' ) ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isOpera ) {
|
sources = media.find( 'source' );
|
||||||
opera = false;
|
|
||||||
media.find( 'source' ).each(function (i, elem) {
|
|
||||||
if ( elem.type.match(/video\/(ogv|webm)/gi) !== null ||
|
|
||||||
( elem.type.match(/audio\/(ogg|wav)/gi) !== null ) ) {
|
|
||||||
opera = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return opera;
|
_.find( this.compat, function (supports, browser) {
|
||||||
} else if ( isChrome ) {
|
if ( ua.is( browser ) ) {
|
||||||
chrome = false;
|
found = true;
|
||||||
media.find( 'source' ).each(function (i, elem) {
|
_.each( sources, function (elem) {
|
||||||
if ( elem.type.match(/video\/(mp4|m4v|mpeg|webm|ogg)/gi) !== null ||
|
var audio = new RegExp( 'audio\/(' + supports.audio.join('|') + ')', 'gi' ),
|
||||||
elem.type.match(/audio\/(ogg|mpeg|x-ms-wma)/gi) !== null ) {
|
video = new RegExp( 'video\/(' + supports.video.join('|') + ')', 'gi' );
|
||||||
chrome = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return chrome;
|
if ( elem.type.match( video ) !== null || elem.type.match( audio ) !== null ) {
|
||||||
|
test = true;
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
} else if ( isFirefox ) {
|
return test || found;
|
||||||
ff = false;
|
} );
|
||||||
media.find( 'source' ).each(function (i, elem) {
|
|
||||||
if ( elem.type.match(/video\/(ogg|webm)/gi) !== null ||
|
|
||||||
( elem.type.match(/audio\/(ogg|mpeg)/gi) !== null && -1 === elem.src.indexOf('.m4a') ) ) {
|
|
||||||
ff = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return ff;
|
return test;
|
||||||
|
|
||||||
} else if ( isSafari ) {
|
|
||||||
safari = false;
|
|
||||||
media.find( 'source' ).each(function (i, elem) {
|
|
||||||
if ( elem.type.match(/video\/(mp4|m4v|mpeg|x-ms-wmv|quicktime)/gi) !== null ||
|
|
||||||
( elem.type.match(/audio\/(mpeg|wav)/gi) !== null ) ) {
|
|
||||||
safari = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return safari;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user