Procházet zdrojové kódy

fix: 修复h5华为浏览器返回不刷新问题

cuiyalong před 2 roky
rodič
revize
ea225f13ab

+ 19 - 13
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -496,11 +496,30 @@ function mockAppFn () {
   }
 }
 
+// 部分h5浏览器(华为、荣耀)页面返回不刷新兼容
+function fixSomeH5BackRefresh () {
+  if (utilsEnv.platformEnvs.platform !== 'h5') return
+  const ua = navigator.userAgent.toLowerCase()
+  // 判断是不是华为/荣耀浏览器
+  const huawei = ua.includes('huawei') || ua.includes('honor')
+  if (huawei) {
+    window.addEventListener('visibilitychange', function () {
+      const v = document.visibilityState
+      if (v === 'hidden') {
+        // do something
+      } else if (v === 'visible') {
+        location.reload()
+      }
+    })
+  }
+}
+
 /**
  * @date 2023-1-29
  * 用于快速实现移动端引流相关调整,在App代码基础移植适配H5
  */
 mockAppFn()
+fixSomeH5BackRefresh() // 华为、荣耀h5浏览器在页面返回不刷新兼容
 
 $(function () {
   if (mySysIsIos() && utilsEnv.platformEnvs.inApp) {
@@ -1378,19 +1397,6 @@ function checkMsgCount(acync, str, callback) {
       if (str == 1) {
         var isMsg = localStorage.getItem('isMsgNum')
         if (num !== Number(isMsg)) {
-          try {
-            /**
-             * 在此直接刷新 首页/消息 页面 (旧业务逻辑,可能是想消除对应页面未读消息小红点?)
-             * 改为判断是否为 tabbar 页面,仅在是 tabbar 页面是刷新
-             */
-            if (checkNowInTabbarPage()) {
-              JyObj.refreshAppointTab('search', 1)
-              JyObj.refreshAppointTab('message', 1)
-            }
-            // JyObj.checkLab()
-          } catch (e) {
-            console.log(e)
-          }
           kfData(acync, num)
           // localStorage.setItem('isMsgNum', num)
         }