import getWindowOffset from 'uni-platform/helpers/get-window-offset'
|
import safeAreaInsets from 'safe-area-insets'
|
|
export function getWindowInfo () {
|
var screen = window.screen
|
var pixelRatio = window.devicePixelRatio
|
// 横屏时 iOS 获取的屏幕宽高颠倒,进行纠正
|
const screenFix = /^Apple/.test(navigator.vendor) && typeof window.orientation === 'number'
|
const landscape = screenFix && Math.abs(window.orientation) === 90
|
var screenWidth = screenFix ? Math[landscape ? 'max' : 'min'](screen.width, screen.height) : screen.width
|
var screenHeight = screenFix ? Math[landscape ? 'min' : 'max'](screen.height, screen.width) : screen.height
|
var windowWidth = Math.min(window.innerWidth, document.documentElement.clientWidth, screenWidth) || screenWidth
|
var windowHeight = window.innerHeight
|
var statusBarHeight = safeAreaInsets.top
|
|
var safeArea = {
|
left: safeAreaInsets.left,
|
right: windowWidth - safeAreaInsets.right,
|
top: safeAreaInsets.top,
|
bottom: windowHeight - safeAreaInsets.bottom,
|
width: windowWidth - safeAreaInsets.left - safeAreaInsets.right,
|
height: windowHeight - safeAreaInsets.top - safeAreaInsets.bottom
|
}
|
|
const {
|
top: windowTop,
|
bottom: windowBottom
|
} = getWindowOffset()
|
|
windowHeight -= windowTop
|
windowHeight -= windowBottom
|
|
return {
|
windowTop,
|
windowBottom,
|
windowWidth,
|
windowHeight,
|
pixelRatio,
|
screenWidth,
|
screenHeight,
|
statusBarHeight,
|
safeArea,
|
safeAreaInsets: {
|
top: safeAreaInsets.top,
|
right: safeAreaInsets.right,
|
bottom: safeAreaInsets.bottom,
|
left: safeAreaInsets.left
|
},
|
screenTop: screenHeight - windowHeight
|
}
|
}
|