技术

标记用户浏览器信息

user-agent相关

标记用户浏览器信息

可以使用第三方库react-device-detect,方便做兼容性设置 或者使用navigator.userAgent

import * as deviceDetect from 'react-device-detect'

可以从deviceDetect中解构出浏览器名称、浏览器版本、引擎名称...etc

const {browserName, engineName} = deviceDetect

对于有兼容性问题的浏览器可以直接选择不展示

使用案例:

function checkBrowserVersion () {
    const {browserName, browserVersion, engineName, engineVersion, osName, osVersion} = DeviceDetect
    // alert(browserName+"_"+browserVersion+','+engineName+"_"+engineVersion+","+osName+"_"+osVersion)
    // setTimeout(() => console.log(DeviceDetect), 3000)

    // 浏览器版本必须需要兼容:where() CSS选择器
    if (browserName == 'Edge') return browserVersion >= 88
    if (browserName == 'IE') return false
    if (browserName == 'Firefox') return browserVersion >= 82
    if (browserName == 'Chrome') return browserVersion >= 88
    if (browserName == 'Opera') return browserVersion >= 74
    if (browserName == 'Safari') return browserVersion >= 14

    // 移动端浏览器
    // if (browserName == 'QQBrowser') return browserVersion >= 15
    // if (browserName == 'Quark') return browserVersion >= 7
    // if (browserName == 'Quark') return browserVersion >= 7
    // if (browserName == 'MIUI Browser') return browserVersion >= 9
    // if (browserName == 'WeChat') return browserVersion >= 8

    const mainEngineVersion = engineVersion.split('.')[0]
    if (engineName == "Blink") return mainEngineVersion >= 88
    // if (engineName == "Gecko") return mainEngineVersion >= 88
    // if (engineName == "WebKit") return mainEngineVersion >= 14
    // if (engineName == "Trident") return mainEngineVersion >= 88

    return true
}

参考链接: https://www.npmjs.com/package/react-device-detect 相关兼容性参考can i use或者mdn

使用navigator.userAgent

const [userAgent, setUserAgent] = useState('');
const [language, setLanguage] = useState('');
  useEffect(() => {
    setUserAgent(navigator.userAgent);
    setLanguage(navigator.language || navigator.userLanguage);
  }, []);

需要其他的也可以从navigator中获取 比如platform,hardwareConcurrency,onLine,巴拉巴拉