Pārlūkot izejas kodu

动态加载sports js

zhejiushizhuce 2 gadi atpakaļ
vecāks
revīzija
0994158c67
2 mainītis faili ar 42 papildinājumiem un 2 dzēšanām
  1. 0 1
      public/index.html
  2. 42 1
      src/pages/Sport.jsx

+ 0 - 1
public/index.html

@@ -37,7 +37,6 @@
     <meta name="format-detection" content="telephone=no">
     <link rel="manifest" href="https://progressier.app/AcUf7ja3Lb8f8w5NS4LT/progressier.json"/>
     <script defer src="https://progressier.app/AcUf7ja3Lb8f8w5NS4LT/script.js"></script>
-    <script src="https://ui.invisiblesport.com/bt-renderer.min.js"></script>
   </head>
   <body>
     <noscript>You need to enable JavaScript to run this app.</noscript>

+ 42 - 1
src/pages/Sport.jsx

@@ -8,6 +8,7 @@ import {ROUTE_PATH} from "@constants/routes";
 
 const Sport = ({...props}) => {
     const [isReToken, setIsReToken] = useState(false);
+    const [isSrcLoaded, setIsSrcLoaded] = useState(false);
     const dispatch = useDispatch();
     const {pathname} = useLocation();
     const initSport=()=>{
@@ -19,6 +20,42 @@ const Sport = ({...props}) => {
     const resetSport=()=>{
         initSport();
     }
+    const getDomainSuffix=()=>{
+        // 获取当前域名
+        let hostname = window.location.hostname;
+        // 使用点分隔符分割域名
+        let parts = hostname.split('.');
+        // 取得最后一个部分,即后缀
+        let suffix = parts[parts.length - 1];
+
+        return suffix;
+    }
+    const checkShowSport=()=>{
+        return isReToken&&isSrcLoaded;
+    }
+    const checkLoadScript=()=>{
+        if (window.BTRenderer!=null){
+            setIsSrcLoaded(true);
+            return;
+        }
+        let suffix = getDomainSuffix();
+        let script=document.createElement('script');
+        if (suffix==="pro"){
+            script.src="https://ui.invisiblesport.com/bt-renderer.min.js";
+        }
+        else
+        {
+            script.src="https://24680.sptpub.com/bt-renderer.min.js";
+        }
+        script.onload = function() {
+            setIsSrcLoaded(true);
+        };
+
+        script.onerror = function() {
+
+        };
+        document.head.appendChild(script);
+    }
     useEffect(()=>{
         if (pathname===ROUTE_PATH.SPORTS||pathname===ROUTE_PATH.RACING){
             initSport();
@@ -28,10 +65,14 @@ const Sport = ({...props}) => {
             if (!isReToken)setIsReToken(true);
         }
     },[pathname])
+    useEffect(()=>{
+        checkLoadScript();
+    },[])
     return (
         <>
             {
-                !isReToken?(<LoadingIn></LoadingIn>):(<WSport {...props} resetSport={resetSport}/>)
+                // !isReToken?(<LoadingIn></LoadingIn>):(<WSport {...props} resetSport={resetSport}/>)
+                !checkShowSport()?(<LoadingIn></LoadingIn>):(<WSport {...props} resetSport={resetSport}/>)
             }
         </>
     )