Merge pull request #1003 from nofficalfs/Dev-fix-vc

修复版本检测的问题
This commit is contained in:
Spmario233 2024-03-02 07:33:09 +08:00 committed by GitHub
commit 1e451e69d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 24 additions and 4 deletions

View File

@ -92,11 +92,31 @@ new Promise(resolve => {
"safari": [14, 5, 0] "safari": [14, 5, 0]
} }
const versions = [major, minor, patch] const versions = [major, minor, patch]
// require是需求的版本号current是浏览器环境本身的版本号
const check = (require, current) => {
// 防止不存在的意外,提前截断当前版本号的长度
if (current.length > require.length) current.length = require.length
// current是需求的版本号versions[index]是浏览器环境本身的版本号 // 考虑到玄学的NaN情况记录是否存在NaN
// 如果current > versions[index],即当前版本的浏览器版本号达不到要求的版本号,则可判定当前版本无法支持 let flag = false
// 如果versions[index]为NaN必然返回false由于ua信息不可能存在主版本号NaN的情况故不必考虑次版本号/修补版本号并不存在的情况 // 从主版本号遍历到修订版本号,只考虑当前版本号的长度
if (core in supportMap && supportMap[core].some((current, index) => current > versions[index])) { for (let i = 0; i < current.length; ++i) {
// 当前环境版本号当前位若是NaN则记录后直接到下一位
if (isNaN(current[i])) {
flag = true
continue
}
// 如果此时flag为true且current[i]不为NaN版本号则不合法直接否
if (flag) return false
// 上位版本号未达到要求,直接否决
if (require[i] > current[i]) return false
// 上位版本号已超过要求,直接可行
if (current[i] > require[i]) return true
}
return true
}
if (core in supportMap && !check(supportMap[core], versions)) {
const tip = '检测到您的浏览器内核版本无法支持当前无名杀所需的功能请立即升级浏览器或手机webview内核'; const tip = '检测到您的浏览器内核版本无法支持当前无名杀所需的功能请立即升级浏览器或手机webview内核';
console.error(tip); console.error(tip);
let redirect_tip = `您使用的浏览器或无名杀客户端内核版本过低,已经无法正常运行无名杀!\n目前使用的浏览器UA信息为\n${userAgent}\n点击“确认”以前往GitHub下载最新版无名杀客户端可能需要科学上网\n稍后您的无名杀将自动退出(可能的话)`; let redirect_tip = `您使用的浏览器或无名杀客户端内核版本过低,已经无法正常运行无名杀!\n目前使用的浏览器UA信息为\n${userAgent}\n点击“确认”以前往GitHub下载最新版无名杀客户端可能需要科学上网\n稍后您的无名杀将自动退出(可能的话)`;