UNPKG

modernizr

Version:

Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser.

63 lines (52 loc) 2.02 kB
/*! { "name": "HTML5 Video", "property": "video", "caniuse": "video", "tags": ["html5"], "knownBugs": [ "Without QuickTime, `Modernizr.video.h264` will be `undefined`; https://github.com/Modernizr/Modernizr/issues/546" ], "polyfills": [ "html5media", "mediaelementjs", "sublimevideo", "videojs", "leanbackplayer", "videoforeverybody" ] } !*/ /* DOC Detects support for the video element, as well as testing what types of content it supports. Subproperties are provided to describe support for `ogg`, `h264` and `webm` formats, e.g.: ```javascript Modernizr.video // true Modernizr.video.ogg // 'probably' ``` */ define(['Modernizr', 'createElement'], function(Modernizr, createElement) { // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845 // thx to NielsLeenheer and zcorpan // Note: in some older browsers, "no" was a return value instead of empty string. // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2 // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5 Modernizr.addTest('video', function() { var elem = createElement('video'); var bool = false; // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224 try { bool = !!elem.canPlayType if (bool) { bool = new Boolean(bool); bool.ogg = elem.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ''); // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546 bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ''); bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ''); bool.vp9 = elem.canPlayType('video/webm; codecs="vp9"').replace(/^no$/, ''); bool.hls = elem.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/, ''); } } catch (e) {} return bool; }); });