checkWeiboVersion.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* eslint-disable linebreak-style*/
  2. const REG = /__weibo__(\d+).(\d+).(\d+)/;
  3. /**
  4. * 获取字符串中的版本号,并分段输出为数组
  5. * @param versionStr | string | "8.9.3" | 必须为三段版本号,中间用.分隔
  6. * @return versionArr | Array | [8,9,3]
  7. * */
  8. let getVersionArr = (versionStr) => {
  9. let ua = navigator.userAgent;
  10. let _str = versionStr ? `__weibo__${versionStr}` : ua;
  11. let versionArr = [];
  12. if (REG.test(_str)) {
  13. versionArr.push(parseInt(RegExp.$1));
  14. versionArr.push(parseInt(RegExp.$2));
  15. versionArr.push(parseInt(RegExp.$3));
  16. return versionArr;
  17. }
  18. return [0, 0, 0];
  19. };
  20. let compareVer = (version1, version2) => {
  21. let result = -1;
  22. if (version1 > version2) {
  23. result = true;
  24. }
  25. if (version1 < version2) {
  26. result = false;
  27. }
  28. return result;
  29. };
  30. /**
  31. * 判断当前客户端版本是否达到指定版本
  32. * @param targetVersionString | String | "8.9.3" | 必须为三段版本号,中间用.分隔
  33. * @return moreThanTarget | Boolean | true | 是否达到指定版本
  34. * @author shaobo3@
  35. * @example
  36. * checkWeiboVersion('8.9.3');
  37. * */
  38. export default function checkWeiboVersion(targetVersionString = "") {
  39. if (!targetVersionString) {
  40. return false;
  41. }
  42. let targetVersionArr = getVersionArr(targetVersionString);
  43. let clientVersionArr = getVersionArr();
  44. let part1Result = compareVer(clientVersionArr[0], targetVersionArr[0]);
  45. let part2Result = compareVer(clientVersionArr[1], targetVersionArr[1]);
  46. let part3Result = compareVer(clientVersionArr[2], targetVersionArr[2]);
  47. //先比较第一位版本号,不相等直接返回结果,相等判断第二位版本号;
  48. if (part1Result !== -1) return part1Result;
  49. //先比较第二位版本号,不相等直接返回结果,相等判断第三位版本号;
  50. if (part2Result !== -1) return part2Result;
  51. //先比较第三位版本号,不相等直接返回结果,全部相等则返回true;
  52. if (part3Result !== -1) return part3Result;
  53. return true;
  54. }
  55. /* eslint-enable linebreak-style*/