UNPKG

mpegts.js

Version:

HTML5 MPEG2-TS Stream Player

128 lines (110 loc) 3.74 kB
/* * Copyright (C) 2016 Bilibili. All Rights Reserved. * * @author zheng qian <xqq@xqq.im> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ let Browser = {}; function detect() { // modified from jquery-browser-plugin let ua = self.navigator.userAgent.toLowerCase(); let match = /(edge)\/([\w.]+)/.exec(ua) || /(opr)[\/]([\w.]+)/.exec(ua) || /(chrome)[ \/]([\w.]+)/.exec(ua) || /(iemobile)[\/]([\w.]+)/.exec(ua) || /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf('trident') >= 0 && /(rv)(?::| )([\w.]+)/.exec(ua) || ua.indexOf('compatible') < 0 && /(firefox)[ \/]([\w.]+)/.exec(ua) || []; let platform_match = /(ipad)/.exec(ua) || /(ipod)/.exec(ua) || /(windows phone)/.exec(ua) || /(iphone)/.exec(ua) || /(kindle)/.exec(ua) || /(android)/.exec(ua) || /(windows)/.exec(ua) || /(mac)/.exec(ua) || /(linux)/.exec(ua) || /(cros)/.exec(ua) || []; let matched = { browser: match[5] || match[3] || match[1] || '', version: match[2] || match[4] || '0', majorVersion: match[4] || match[2] || '0', platform: platform_match[0] || '' }; let browser = {}; if (matched.browser) { browser[matched.browser] = true; let versionArray = matched.majorVersion.split('.'); browser.version = { major: parseInt(matched.majorVersion, 10), string: matched.version }; if (versionArray.length > 1) { browser.version.minor = parseInt(versionArray[1], 10); } if (versionArray.length > 2) { browser.version.build = parseInt(versionArray[2], 10); } } if (matched.platform) { browser[matched.platform] = true; } if (browser.chrome || browser.opr || browser.safari) { browser.webkit = true; } // MSIE. IE11 has 'rv' identifer if (browser.rv || browser.iemobile) { if (browser.rv) { delete browser.rv; } let msie = 'msie'; matched.browser = msie; browser[msie] = true; } // Microsoft Edge if (browser.edge) { delete browser.edge; let msedge = 'msedge'; matched.browser = msedge; browser[msedge] = true; } // Opera 15+ if (browser.opr) { let opera = 'opera'; matched.browser = opera; browser[opera] = true; } // Stock android browsers are marked as Safari if (browser.safari && browser.android) { let android = 'android'; matched.browser = android; browser[android] = true; } browser.name = matched.browser; browser.platform = matched.platform; for (let key in Browser) { if (Browser.hasOwnProperty(key)) { delete Browser[key]; } } Object.assign(Browser, browser); } detect(); export default Browser;