Browser 是浏览器代理类,封装了浏览器及原生JavaScript提供的功能。
结构 | 描述 |
---|---|
Pakcage | laya.utils |
Class | Laya.Browser |
Hierarchy | Browser |
属性 | 类型 | 描述 |
---|---|---|
Laya.Browser.canvas | HTMLCanvas | 全局离线画布非主画布,用于测量字体,获取图片数据。 |
Laya.Browser.context | CanvasRenderingContext2D | 全局离线画布上绘图的环境,非主画布。 |
Laya.Browser.onAndroid | boolean | 是否在Android设备内 |
Laya.Browser.onIOS | boolean | 是否在iOS设备内 |
Laya.Browser.onIPad | boolean | 是否在iPad设备内 |
Laya.Browser.onIPhone | boolean | 是否在iPhone设备内 |
Laya.Browser.onMac | boolean | 是否在MAC设备 |
Laya.Browser.onPC | boolean | 是否在PC端 |
Laya.Browser.onWP | boolean | 是否在WindowsPhone设备内 |
Laya.Browser.onMobile | boolean | 是否在移动设备,包括iOS和Android等设备。 |
Laya.Browser.onIE | boolean | 是否在IE浏览器内 |
Laya.Browser.onSafari | boolean | 是否在Safari浏览器内 |
Laya.Browser.onQQBrowser | boolean | 是否在QQ浏览器内 |
Laya.Browser.onMQQBrowser | boolean | 是否在移动端QQ或QQ浏览器内 |
Laya.Browser.onWeiXin | boolean | 是否在微信内 |
Laya.Browser.onAlipayMiniGame | boolean | 是否是阿里小游戏 |
Laya.Browser.onBDMiniGame | boolean | 是否是百度小游戏 |
Laya.Browser.onKGMiniGame | boolean | 是否是小米小游戏 |
Laya.Browser.onMiniGame | boolean | 是否微信小游戏 |
Laya.Browser.onQGMiniGame | boolean | 是否是OPPO小游戏 |
Laya.Browser.onQQMiniGame | boolean | 是否是手机QQ小游戏 |
Laya.Browser.onVVMiniGame | boolean | 是否是VIVO小游戏 |
Laya.Browser.supportLocalStorage | boolean | 是否支持LocalStorage本地存储 |
Laya.Browser.supportWebAudio | boolean | 是否支持WebAudio |
Laya.Browser.userAgent | string | 浏览器代理信息 |
存取器 | 描述 |
---|---|
clientHeight | 浏览器窗口可视高度 |
clientWidth | 浏览器窗口可视宽度 |
height | 浏览器窗口物理高度,考虑了设备像素比。 |
width | 浏览器窗口物理宽度,考虑了设备像素比。 |
pixelRatio | 设备像素比 |
container | 画布容器,用来盛放画布的容器,方便对画布进行控制。 |
document | 浏览器原生document文档对象的引用 |
window | 浏览器原生window窗口对象引用 |
可视宽高
浏览器窗口的可视宽度clientWidth和高度clientHeight是通过分析浏览器信息获取的,通过浏览器多个属性值,根据优先级,如果前者为0或为空则选择后者。
优先级 | 宽度 高度 | 滚动条 | 区域 |
---|---|---|---|
1 | window.innerWidth / innerHeight | 包含 | 窗口的文档显示区 |
2 | document.body.clientWidth / clientHeight | 不包含 | 网页可见区域 |
3 | document.documentElement.clientWidth / clientHeight | 不包含 | 窗口文档显示区域 |
设备像素比
早先的移动设备屏幕像素比较低,比如iPhone3的分辨率为320x480,一个像素等于一个屏幕物理像素。随着设备屏幕像素密度越来越高,从iPhone4开始,Apple推出Retina屏,分辨率变为640 x 960即提高了一倍,但屏幕尺寸却没有变化。这就意味着同样大小的屏幕上,像素却多出了一倍,也就是提高了devicePixelRatio 设备像素比。
LayaAir中 “物理分辨率 = 像素分辨率 * 设备像素比”
分辨率 | 宽度 | 高度 |
---|---|---|
设备像素分辨率 | Laya.Browser.clientWidth | Laya.Browser.clientHeight |
设备物理分辨率 | Laya.Browser.width | Laya.Browser.height |
默认从浏览器获取的clientWidth和clientHeight其实并非真正的像素分辨率,而是经过缩放过的分辨率。如果需要获取正确的分辨率,还需要在HTML页面内设置视口viewport。
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
方法 | 描述 |
---|---|
Laya.Browser.createElement() | 创建浏览器原生节点 |
Laya.Browser.removeElement() | 移除指定浏览器原生节点对象 |
Laya.Browser.getElementById() | 获取Document文档对象中拥有指定ID的第一个对象的引用 |
Laya.Browser.now() | 获取浏览器当前时间戳单位毫秒 |