help.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. export function getQueryString(name) {
  2. let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
  3. let r = window.location.search.substr(1).match(reg)
  4. if (r != null) {
  5. return window.decodeURIComponent(r[2])
  6. }
  7. return null
  8. }
  9. export function getQueryStringByUrl(url = '', name = '') {
  10. let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
  11. let r = url.split('?')[1].match(reg)
  12. if (r != null) {
  13. return window.decodeURIComponent(r[2])
  14. }
  15. return null
  16. }
  17. export function debounce(fn, delay) {
  18. let timer; // 定时器
  19. return function (...args) { // 形成闭包
  20. // args 为函数调用时传的参数。
  21. let context = this;
  22. timer && clearTimeout(timer); // 当函数再次执行时,清除定时器,重新开始计时
  23. // 利用定时器,让指定函数延迟执行。
  24. timer = setTimeout(function () {
  25. // 执行传入的指定函数,利用apply更改this绑定和传参
  26. fn.apply(context, args);
  27. }, delay)
  28. }
  29. }
  30. export function throttle(fn, thresh) {
  31. var timeout
  32. var start = new Date;
  33. var threshhold = thresh || 500
  34. return function () {
  35. var context = this, args = arguments, curr = new Date() - 0
  36. clearTimeout(timeout)//总是干掉事件回调
  37. if (curr - start >= threshhold) {
  38. fn.apply(context, args) //只执行一部分方法,这些方法是在某个时间段内执行一次
  39. start = curr
  40. } else {
  41. // 让方法在脱离事件后也能执行一次
  42. timeout = setTimeout(function () {
  43. fn.apply(context, args)
  44. }, threshhold);
  45. }
  46. }
  47. }
  48. export function setStorage(key, value) {
  49. return localStorage.setItem(key, JSON.stringify(value));
  50. }
  51. export function getStorage(key) {
  52. const item = localStorage.getItem(key);
  53. try {
  54. return item ? JSON.parse(item) : '';
  55. } catch (e) {
  56. return item;
  57. }
  58. }
  59. export function guid() {
  60. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
  61. var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
  62. return v.toString(16);
  63. });
  64. }
  65. export function scaleNumber(num) {
  66. let length = num.toString().split('.')[1].length;
  67. let scale = '1';
  68. for (let i = 0; i < length; i++) {
  69. scale += '0';
  70. }
  71. let val = num * scale;
  72. return {
  73. val,
  74. scale
  75. };
  76. }
  77. export function getBit(value) {
  78. const reg = /([0-9]+\.[0-9]{4})[0-9]*/;
  79. if (value) {
  80. let str = value.toString();
  81. str = str.replace(reg, "$1");
  82. return str;
  83. } else {
  84. return value;
  85. }
  86. }
  87. export function getCookie(name) {
  88. var strcookie = document.cookie;//获取cookie字符串
  89. var arrcookie = strcookie.split("; ");//分割
  90. //遍历匹配
  91. for (var i = 0; i < arrcookie.length; i++) {
  92. var arr = arrcookie[i].split("=");
  93. if (arr[0] == name) {
  94. return arr[1];
  95. }
  96. }
  97. return "";
  98. }
  99. export function nextTick(fn, time = 50) {
  100. return new Promise((resolve, reject) => {
  101. setTimeout(() => {
  102. if (fn) fn();
  103. resolve();
  104. }, time)
  105. })
  106. }
  107. export function getBrowser() {
  108. let browser;
  109. let UserAgent = navigator.userAgent.toLowerCase();
  110. if (UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1) {
  111. browser = `Chrome`
  112. } else if (UserAgent.indexOf('firefox') > -1) {
  113. browser = `Firefox`
  114. } else if (UserAgent.indexOf('opera') > -1) {
  115. browser = `Opera`
  116. } else if (UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1) {
  117. browser = `Safari`
  118. } else if (UserAgent.indexOf('edge') > -1) {
  119. browser = `Edge`
  120. } else {
  121. browser = `Other`
  122. }
  123. return browser;
  124. }
  125. export function getOffsetRect(element) {
  126. var oTop = element.offsetTop;
  127. var oLeft = element.offsetLeft;
  128. var current = element.offsetParent;
  129. while (current !== null) {
  130. oTop += current.offsetTop;
  131. oLeft += current.offsetLeft;
  132. current = current.offsetParent;
  133. }
  134. return {
  135. top: oTop,
  136. left: oLeft,
  137. }
  138. }
  139. export function formatSecondsAsTime(secs) {
  140. var hr = Math.floor(secs / 3600)
  141. var min = Math.floor((secs - (hr * 3600)) / 60)
  142. var sec = Math.floor(secs - (hr * 3600) - (min * 60))
  143. var text
  144. if (hr < 10) {
  145. hr = "0" + hr
  146. }
  147. if (min < 10) {
  148. min = "0" + min
  149. }
  150. if (sec < 10) {
  151. sec = "0" + sec
  152. }
  153. if (hr == 0) {
  154. hr = ""
  155. }
  156. if (hr.length > 0) {
  157. text = hr + ':' + min + ':' + sec
  158. } else {
  159. text = min + ':' + sec
  160. }
  161. return text
  162. return fmt;
  163. }