触发跳转事件时触发此方法,指定时间内页面没有隐藏,则判定为没有跳转成功
function checkOpen(timeout = 2300) {
function getSupportedProperty() {
let hidden
let visibilityChange
if (typeof document.hidden !== 'undefined') {
hidden = 'hidden'
visibilityChange = 'visibilitychange'
} else if (typeof document.msHidden !== 'undefined') {
hidden = 'msHidden'
visibilityChange = 'msvisibilitychange'
} else if (typeof document.webkitHidden !== 'undefined') {
hidden = 'webkitHidden'
visibilityChange = 'webkitvisibilitychange'
}
return {
hidden,
visibilityChange,
}
}
function isPageHidden() {
const ob = getSupportedProperty()
const hidden = ob?.hidden
if (typeof hidden === 'undefined') return false
return document[hidden]
}
return new Promise((resolve, reject) => {
const ob = getSupportedProperty()
const visibilityChange = ob?.visibilityChange
document.addEventListener(visibilityChange, function () {
if(document.visibilityState == "hidden"){
resolve()
}
});
const check = () => {
const pageHidden = isPageHidden()
if (pageHidden) {
resolve() // 页面被隐藏,说明唤醒成功
} else {
reject(new Error('唤醒超时'))
}
}
const timer = setTimeout(() => {
check()
}, timeout)
})
}