admin 发表于 2025-12-8 16:38:14

微信小程序开发web页面进行UA适配的方法

创建获取UA的代码函数:

function getos() {
    const ua = window.navigator.userAgent.toLowerCase();

    const isWindows = ua.indexOf("windows") !== -1;

    const isHarmony = ua.indexOf("openharmony") !== -1;
    const isHarmonyPC = isHarmony && ua.indexOf("pc;") !== -1;

    const isRealIpadUA = ua.indexOf("ipad") !== -1;
    const isMaskedIpad = ua.indexOf("macintosh") !== -1 && navigator.maxTouchPoints > 1;// 伪装 iPad: UA 包含 "macintosh" 但支持触控 (系统认为是桌面模式)
    const isMac = ua.indexOf("macintosh") !== -1;

    return {
      isWechat: ua.indexOf("micromessenger") !== -1,// 是否为微信客户端浏览器

      isAndroid: ua.indexOf("android")!==-1 && !isHarmony,// Android 手机,排除 Harmony
      isIphone: ua.indexOf("iphone")!==-1|| ua.indexOf("ipod")!==-1,// Iphone 手机等移动设备
      isHarmony: isHarmony && !isHarmonyPC,// Harmony 手机 (排除 Harmony PC)
      isIpad: isRealIpadUA || isMaskedIpad,// iPad 或 伪装 Mac 的 iPad

      isWindows,      // Windows 电脑
      isHarmonyPC,    // 鸿蒙 PC
      isMac,          // Mac 电脑 (也包含桌面模式的 iPad)

      isPC: isMac || isWindows || isHarmonyPC// 广义 PC:用于判断是否展示宽屏/桌面版 UI
    };
}使用时:
const os= getos()

if (os.isWechat) {}       // 微信客户端浏览器处理逻辑

// 移动端处理逻辑

if (os.isAndroid) {}      // Android 手机、平板处理逻辑
if (os.isHarmony) {}      // HarmonyOS 手机、平板处理逻辑
if (os.isIphone) {}       // Iphone 手机处理逻辑
if (os.isIpad) {}         // iPad 手机处理逻辑

// PC处理逻辑

if (os.isHarmonyPC) {}    // HarmonyOS PC处理逻辑
else if (os.isMac) {}   // Mac处理
else if (os.isWindows) {} // windows处理

if (os.isPC) {}         // 桌面版浏览器处理逻辑

页: [1]
查看完整版本: 微信小程序开发web页面进行UA适配的方法