laya-coreui-es
Version:
laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改
268 lines (267 loc) • 11.5 kB
JavaScript
import { ILaya } from "../../ILaya";
export class Browser {
static __init__() {
var Laya = window.Laya || ILaya.Laya;
if (Browser._window)
return Browser._window;
var win = Browser._window = window;
var doc = Browser._document = win.document;
var u = Browser.userAgent = win.navigator.userAgent;
var maxTouchPoints = win.navigator.maxTouchPoints || 0;
var platform = win.navigator.platform;
if ("my" in Browser.window) {
if (u.indexOf('TB/') > -1 || u.indexOf('Taobao/') > -1 || u.indexOf('TM/') > -1) {
window.tbMiniGame(Laya, Laya);
if (!Laya["TBMiniAdapter"]) {
console.error("请先添加淘宝适配库,详细教程:https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-5-6-0");
}
else {
Laya["TBMiniAdapter"].enable();
}
}
else if (u.indexOf('AlipayMiniGame') > -1) {
window.aliPayMiniGame(Laya, Laya);
if (!Laya["ALIMiniAdapter"]) {
console.error("请先添加阿里小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-5-6-0");
}
else {
Laya["ALIMiniAdapter"].enable();
}
}
}
if (u.indexOf('OPPO') == -1 && u.indexOf("MiniGame") > -1 && "wx" in Browser.window) {
if ("tt" in Browser.window) {
window.ttMiniGame(Laya, Laya);
if (!Laya["TTMiniAdapter"]) {
console.error("请引入字节跳动小游戏的适配库");
}
else {
Laya["TTMiniAdapter"].enable();
}
}
else if ("bl" in Browser.window) {
window.biliMiniGame(Laya, Laya);
if (!Laya["BLMiniAdapter"]) {
console.error("请引入bilibili小游戏的适配库,详细教程:https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-5-7-0");
}
else {
Laya["BLMiniAdapter"].enable();
}
}
else if ("qq" in Browser.window) {
window.qqMiniGame(Laya, Laya);
if (!Laya["QQMiniAdapter"]) {
console.error("请引入手机QQ小游戏的适配库,详细教程:https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-5-0-0");
}
else {
Laya["QQMiniAdapter"].enable();
}
}
else {
window.wxMiniGame(Laya, Laya);
if (!Laya["MiniAdpter"]) {
console.error("请先添加小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?nav=zh-ts-5-0-0");
}
else {
Laya["MiniAdpter"].enable();
}
}
}
if ("hbs" in Browser.window) {
window.hwMiniGame(Laya, Laya);
if (!Laya["HWMiniAdapter"]) {
console.error("请先添加小游戏适配库!");
}
else {
Laya["HWMiniAdapter"].enable();
}
}
if (u.indexOf("SwanGame") > -1) {
window.bdMiniGame(Laya, Laya);
if (!Laya["BMiniAdapter"]) {
console.error("请先添加百度小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-5-1-0");
}
else {
Laya["BMiniAdapter"].enable();
}
}
if (u.indexOf('QuickGame') > -1) {
window.miMiniGame(Laya, Laya);
if (!Laya["KGMiniAdapter"]) {
console.error("请先添加小米小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-5-2-0");
}
else {
Laya["KGMiniAdapter"].enable();
}
}
if (u.indexOf('OPPO') > -1 && u.indexOf('MiniGame') > -1) {
window.qgMiniGame(Laya, Laya);
if (!Laya["QGMiniAdapter"]) {
console.error("请先添加OPPO小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-5-3-0");
}
else {
Laya["QGMiniAdapter"].enable();
}
}
if (u.indexOf('VVGame') > -1) {
window.vvMiniGame(Laya, Laya);
if (!Laya["VVMiniAdapter"]) {
console.error("请先添加VIVO小游戏适配库,详细教程:https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-5-4-0");
}
else {
Laya["VVMiniAdapter"].enable();
}
}
win.trace = console.log;
win.requestAnimationFrame = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (fun) {
return win.setTimeout(fun, 1000 / 60);
};
var bodyStyle = doc.body.style;
bodyStyle.margin = 0;
bodyStyle.overflow = 'hidden';
bodyStyle['-webkit-user-select'] = 'none';
bodyStyle['-webkit-tap-highlight-color'] = 'rgba(200,200,200,0)';
var metas = doc.getElementsByTagName('meta');
var i = 0, flag = false, content = 'width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no';
while (i < metas.length) {
var meta = metas[i];
if (meta.name == 'viewport') {
meta.content = content;
flag = true;
break;
}
i++;
}
if (!flag) {
meta = doc.createElement('meta');
meta.name = 'viewport', meta.content = content;
doc.getElementsByTagName('head')[0].appendChild(meta);
}
Browser.onMobile = window.conch ? true : u.indexOf("Mobile") > -1;
Browser.onIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
Browser.onIPhone = u.indexOf("iPhone") > -1;
Browser.onMac = u.indexOf("Mac OS X") > -1;
Browser.onIPad = u.indexOf("iPad") > -1 || (platform === 'MacIntel' && maxTouchPoints > 1);
Browser.onAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
Browser.onWP = u.indexOf("Windows Phone") > -1;
Browser.onQQBrowser = u.indexOf("QQBrowser") > -1;
Browser.onMQQBrowser = u.indexOf("MQQBrowser") > -1 || (u.indexOf("Mobile") > -1 && u.indexOf("QQ") > -1);
Browser.onIE = !!win.ActiveXObject || "ActiveXObject" in win;
Browser.onWeiXin = u.indexOf('MicroMessenger') > -1;
Browser.onSafari = u.indexOf("Safari") > -1;
Browser.onPC = !Browser.onMobile;
Browser.onMiniGame = u.indexOf('MiniGame') > -1;
Browser.onBDMiniGame = u.indexOf('SwanGame') > -1;
Browser.onLayaRuntime = !!window.conch;
if (u.indexOf('OPPO') > -1 && u.indexOf('MiniGame') > -1) {
Browser.onQGMiniGame = true;
Browser.onMiniGame = false;
}
else if ("qq" in Browser.window && u.indexOf('MiniGame') > -1) {
Browser.onQQMiniGame = true;
Browser.onMiniGame = false;
}
else if ("bl" in Browser.window && u.indexOf('MiniGame') > -1) {
Browser.onBLMiniGame = true;
Browser.onMiniGame = false;
}
else if ("tt" in Browser.window && u.indexOf('MiniGame') > -1) {
Browser.onTTMiniGame = true;
Browser.onMiniGame = false;
}
Browser.onHWMiniGame = "hbs" in Browser.window;
Browser.onVVMiniGame = u.indexOf('VVGame') > -1;
Browser.onKGMiniGame = u.indexOf('QuickGame') > -1;
if (u.indexOf('AlipayMiniGame') > -1) {
Browser.onAlipayMiniGame = true;
Browser.onMiniGame = false;
}
if (u.indexOf('TB/') > -1 || u.indexOf('Taobao/') > -1 || u.indexOf('TM/') > -1) {
Browser.onTBMiniGame = true;
}
return win;
}
static get _isMiniGame() {
return Browser.onMiniGame || Browser.onBDMiniGame || Browser.onQGMiniGame || Browser.onKGMiniGame || Browser.onVVMiniGame || Browser.onAlipayMiniGame || Browser.onQQMiniGame || Browser.onBLMiniGame || Browser.onTTMiniGame || Browser.onHWMiniGame || Browser.onTBMiniGame;
}
static createElement(type) {
Browser.__init__();
return Browser._document.createElement(type);
}
static getElementById(type) {
Browser.__init__();
return Browser._document.getElementById(type);
}
static removeElement(ele) {
if (ele && ele.parentNode)
ele.parentNode.removeChild(ele);
}
static now() {
return Date.now();
;
}
static get clientWidth() {
Browser.__init__();
return Browser._window.innerWidth || Browser._document.body.clientWidth;
}
static get clientHeight() {
Browser.__init__();
return Browser._window.innerHeight || Browser._document.body.clientHeight || Browser._document.documentElement.clientHeight;
}
static get width() {
Browser.__init__();
return ((ILaya.stage && ILaya.stage.canvasRotation) ? Browser.clientHeight : Browser.clientWidth) * Browser.pixelRatio;
}
static get height() {
Browser.__init__();
return ((ILaya.stage && ILaya.stage.canvasRotation) ? Browser.clientWidth : Browser.clientHeight) * Browser.pixelRatio;
}
static get pixelRatio() {
if (Browser._pixelRatio < 0) {
Browser.__init__();
if (Browser.userAgent.indexOf("Mozilla/6.0(Linux; Android 6.0; HUAWEI NXT-AL10 Build/HUAWEINXT-AL10)") > -1)
Browser._pixelRatio = 2;
else {
Browser._pixelRatio = (Browser._window.devicePixelRatio || 1);
if (Browser._pixelRatio < 1)
Browser._pixelRatio = 1;
}
}
return Browser._pixelRatio;
}
static get container() {
if (!Browser._container) {
Browser.__init__();
Browser._container = Browser.createElement("div");
Browser._container.id = "layaContainer";
Browser._document.body.appendChild(Browser._container);
}
return Browser._container;
}
static set container(value) {
Browser._container = value;
}
static get window() {
return Browser._window || Browser.__init__();
}
static get document() {
Browser.__init__();
return Browser._document;
}
}
Browser._pixelRatio = -1;
Browser.mainCanvas = null;
Browser.hanzi = new RegExp("^[\u4E00-\u9FA5]$");
Browser.fontMap = {};
Browser.measureText = function (txt, font) {
var isChinese = Browser.hanzi.test(txt);
if (isChinese && Browser.fontMap[font]) {
return Browser.fontMap[font];
}
var ctx = Browser.context;
ctx.font = font;
var r = ctx.measureText(txt);
if (isChinese)
Browser.fontMap[font] = r;
return r;
};