main.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. import { createPinia } from 'pinia'
  5. import SerialFrames from '@/components/SerialFrames.vue'
  6. import TimeCommon from '@/components/times/timecommon.vue'
  7. const app = createApp(App)
  8. app.use(router)
  9. .component('SerialFrames', SerialFrames)
  10. .component('TimeCommon', TimeCommon)
  11. .use(createPinia())
  12. .mount('#app');
  13. app.config.globalProperties.config = config
  14. const idealWindowInnerHeight = 1015 // 设计稿的高度
  15. const idealRootFontSize = 24 // 设计稿里选择的根元素尺寸
  16. const appNode = document.querySelector('body')
  17. if (/Mobi|Android|iPhone|SymbianOS|Windows Phone|iPad|iPod/i.test(navigator.userAgent)) {
  18. app.config.globalProperties.$isMobile = true
  19. document.getElementById('app').classList.add('mobile')
  20. // 禁止多手指操作缩放
  21. document.addEventListener('touchstart', function(event) {
  22. if (event.touches.length > 1) {
  23. event.preventDefault()
  24. }
  25. }, { passive: false, capture: true })
  26. // // 禁止双击放大
  27. // var lastTouchEnd = 0
  28. // document.documentElement.addEventListener('touchend', function(event) {
  29. // var now = Date.now()
  30. // if (now - lastTouchEnd <= 300) {
  31. // event.preventDefault()
  32. // }
  33. // lastTouchEnd = now
  34. // }, {
  35. // passive: false
  36. // })
  37. } else {
  38. app.config.globalProperties.$isMobile = false
  39. // app.config.globalProperties.$isMobile = true
  40. // document.getElementById('app').classList.add('mobile')
  41. }
  42. if (/WeChat/i.test(navigator.userAgent)) {
  43. app.config.globalProperties.$isWeChat = true
  44. }
  45. if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
  46. app.config.globalProperties.$isSafari = true
  47. }
  48. if (/firefox/i.test(navigator.userAgent)) {
  49. app.config.globalProperties.$isFirefox = true
  50. }
  51. /* 傻逼safari中要等一下才能拿到准确的视口尺寸。所以刚加载时要做一些骚操作。所以先不显示页面。 */
  52. if (app.config.globalProperties.$isSafari) {
  53. appNode.style.opacity = '0'
  54. setTimeout(() => {
  55. appNode.style.opacity = ''
  56. }, 3000)
  57. }
  58. // 傻逼safari中往往要等一下才能拿到准确的视口尺寸,但刷新后却可以立刻拿到准确的尺寸。所以判断下视口尺寸是否有变化,有变化就刷新重来。
  59. const shabiSafari = window.innerHeight
  60. setTimeout(() => {
  61. if (shabiSafari !== window.innerHeight) {
  62. location.reload()
  63. }
  64. }, 2500)
  65. function onResize() {
  66. if ( app.config.globalProperties.$isMobile && window.innerHeight > window.innerWidth ) {
  67. app.config.globalProperties.$isRotate = true
  68. appNode.style.width = appNode.parentNode.clientHeight + 'px'
  69. appNode.style.height = appNode.parentNode.clientWidth + 'px'
  70. appNode.style.transformOrigin = `${appNode.parentNode.clientWidth / 2}px ${appNode.parentNode.clientWidth / 2}px`
  71. appNode.style.transform = 'rotate(90deg)'
  72. } else {
  73. app.config.globalProperties.$isRotate = false
  74. appNode.style.width = '100%'
  75. appNode.style.height = '100%'
  76. appNode.style.transformOrigin = ``
  77. appNode.style.transform = ''
  78. }
  79. if (app.config.globalProperties.$isRotate) {
  80. app.config.globalProperties.$oneRemToPx = window.innerWidth * idealRootFontSize / idealWindowInnerHeight
  81. app.config.globalProperties.$windowSizeX = window.innerHeight
  82. app.config.globalProperties.$windowSizeY = window.innerWidth
  83. if (app.config.globalProperties.$isMobile && app.config.globalProperties.$isSafari) {
  84. appNode.classList.remove('homepage-need-handle')
  85. }
  86. } else {
  87. app.config.globalProperties.$oneRemToPx = window.innerHeight * idealRootFontSize / idealWindowInnerHeight
  88. app.config.globalProperties.$windowSizeX = window.innerWidth
  89. app.config.globalProperties.$windowSizeY = window.innerHeight
  90. if (app.config.globalProperties.$isMobile && app.config.globalProperties.$isSafari) {
  91. appNode.classList.add('homepage-need-handle')
  92. }
  93. }
  94. document.documentElement.style.fontSize = app.config.globalProperties.$oneRemToPx + 'px'
  95. }
  96. onResize()
  97. window.addEventListener('resize', () => {
  98. onResize()
  99. })