实用JavaScript方法(H5,手机端)

判断用户当前版本号是否符合要求

(主要用于H5活动,在链接后面拼接的用户当前版本号进行判断) 

/**
 * 版本比较
 * @param ver1
 * @param ver2
 * @returns
 */
export function versionfunegt(ver1: string, ver2: string): boolean {
  const version1pre = parseFloat(ver1)
  const version2pre = parseFloat(ver2)
  const version1next = parseInt(ver1.replace(version1pre + '.', ''))
  const version2next = parseInt(ver2.replace(version2pre + '.', ''))
  if (version1pre > version2pre) {
    return true
  } else if (version1pre < version2pre) {
    return false
  } else {
    if (version1next >= version2next) {
      return true
    } else {
      return false
    }
  }
}

获取链接中的参数 

/**
 * 地址参数获取
 * tips: 获取参数的过程中,可能客户端传递的是编码过的地址,所以需要解码一下
 * 目前碰到过的两种编码码: encodeURI()编码 => decodeURI()解码 和 encodeURIComponent()编码 => decodeURIComponent()解码
 * 如果是这两种对应的编码方式,获取到地址之后外面用对应的解码方法包裹一下即可
 */
export function getHrefParams(key: string): string {
  const query: string = decodeURIComponent(window.location.href).split('?')[1]?.split('#/')[0] // 根路径下hash模式会自动在末尾拼接 #/
  const variable: Record<string, string> = {}
  if (query) {
    const variableList: string[] = query.split('&')
    variableList.forEach((item) => {
      const [k] = item.split('=')
      variable[k] = item.replace(`${k}=`, '').replace(/\s/g, '+') // 防止参数携带=号,比如token就可能存在=
    })
  }
  return variable[key]
}

获取静态资源地址(需要搭配vite框架使用)

/**
 * getAssetsFile
 * @desc 获取静态资源地址
 * @param dir 文件夹名称
 * @param url 文件名
 */
export function getAssetsFile(url: string): string {
  return new URL(`../assets/${url}`, import.meta.url).href
}

 调用app端方法

/**
 * 判断手机类型
 */
export function judgePhoneType() {
  const u = navigator.userAgent
  const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1
  const isIos = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
  return { isAndroid, isIos }
}

/**
 * 调用IOS | android API接口方法
 * 消息传送
 * type: 执行操作类型
 *     src/common/ConstantPool.js IOS_COMMAND 查看所有 type
 *     eg : sendMessage(IOS_COMMAND.CLOSE)
 * data: 所需要的参数
 *     和IOS安卓协商参数
 * */
export function sendMessage(type: CLINET_COMMAND, params = {}) {
  type materialsType = Record<string, any>
  const materials: materialsType = { type }
  const { isIos, isAndroid } = judgePhoneType()
  if (isIos) {
    materials.params = params
    window.webkit.messageHandlers.common.postMessage(JSON.stringify(materials))
  } else if (isAndroid) {
    materials.data = params
    window.bridge.postMessage(JSON.stringify(materials))
  }
}

判断是否处于微信

/**
 * 判断是不是微信
 */
function isWeiXin() {
  return (
    /micromessenger/i.test(navigator.userAgent.toLowerCase()) ||
    typeof navigator.wxuserAgent !== "undefined"
  );
}

判断是否处于QQ

/**
 * 判断是不是QQ
 */
export function isQQ() {
  var ua = navigator.userAgent.toLowerCase();
  if (ua.match(/QQ\/[0-9]/i)) {
    return true;
  }
  return false;
}

点击复制粘贴

copyUserId(e){
        let url = e;
        let oInput = document.createElement('input');
        oInput.value = url;
        document.body.appendChild(oInput);
        oInput.select(); // 选择对象;
        console.log(oInput.value)
        document.execCommand("Copy"); // 执行浏览器复制命令
        this.$message({
          message: '复制成功',
          type: 'success'
        });
        oInput.remove()
    }

猜你喜欢

转载自blog.csdn.net/yxlyttyxlytt/article/details/130096381
今日推荐