util.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. export function timeFix () {
  2. const time = new Date()
  3. const hour = time.getHours()
  4. return hour < 9 ? '早上好' : hour <= 11 ? '上午好' : hour <= 13 ? '中午好' : hour < 20 ? '下午好' : '晚上好'
  5. }
  6. export function welcome () {
  7. const arr = ['休息一会儿吧', '准备吃什么呢?', '要不要打一把 DOTA', '我猜你可能累了']
  8. const index = Math.floor(Math.random() * arr.length)
  9. return arr[index]
  10. }
  11. /**
  12. * 触发 window.resize
  13. */
  14. export function triggerWindowResizeEvent () {
  15. const event = document.createEvent('HTMLEvents')
  16. event.initEvent('resize', true, true)
  17. event.eventType = 'message'
  18. window.dispatchEvent(event)
  19. }
  20. export function handleScrollHeader (callback) {
  21. let timer = 0
  22. let beforeScrollTop = window.pageYOffset
  23. callback = callback || function () {}
  24. window.addEventListener(
  25. 'scroll',
  26. event => {
  27. clearTimeout(timer)
  28. timer = setTimeout(() => {
  29. let direction = 'up'
  30. const afterScrollTop = window.pageYOffset
  31. const delta = afterScrollTop - beforeScrollTop
  32. if (delta === 0) {
  33. return false
  34. }
  35. direction = delta > 0 ? 'down' : 'up'
  36. callback(direction)
  37. beforeScrollTop = afterScrollTop
  38. }, 50)
  39. },
  40. false
  41. )
  42. }
  43. export function isIE () {
  44. const bw = window.navigator.userAgent
  45. const compare = (s) => bw.indexOf(s) >= 0
  46. const ie11 = (() => 'ActiveXObject' in window)()
  47. return compare('MSIE') || ie11
  48. }
  49. /**
  50. * Remove loading animate
  51. * @param id parent element id or class
  52. * @param timeout
  53. */
  54. export function removeLoadingAnimate (id = '', timeout = 1500) {
  55. if (id === '') {
  56. return
  57. }
  58. setTimeout(() => {
  59. document.body.removeChild(document.getElementById(id))
  60. }, timeout)
  61. }
  62. export function scorePassword (pass) {
  63. let score = 0
  64. if (!pass) {
  65. return score
  66. }
  67. // award every unique letter until 5 repetitions
  68. const letters = {}
  69. for (let i = 0; i < pass.length; i++) {
  70. letters[pass[i]] = (letters[pass[i]] || 0) + 1
  71. score += 5.0 / letters[pass[i]]
  72. }
  73. // bonus points for mixing it up
  74. const variations = {
  75. digits: /\d/.test(pass),
  76. lower: /[a-z]/.test(pass),
  77. upper: /[A-Z]/.test(pass),
  78. nonWords: /\W/.test(pass)
  79. }
  80. let variationCount = 0
  81. for (var check in variations) {
  82. variationCount += (variations[check] === true) ? 1 : 0
  83. }
  84. score += (variationCount - 1) * 10
  85. return parseInt(score)
  86. }