Files
web-Iot/index.html

106 lines
2.9 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" type="image/x-icon" href="./src/assets/logo.png" />
<title>光伏机器人环境感知服务平台</title>
<!-- 预加载关键域名(提速DNS) -->
<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com">
<link rel="dns-prefetch" href="https://unpkg.com">
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
<link rel="dns-prefetch" href="https://lf-unpkg.volccdn.com">
<link rel="stylesheet" href="/css/widgets.css" media="print" onload="this.media='all'">
<!-- CSS 异步加载,不阻塞页面渲染 -->
<link rel="stylesheet" href="/css/veplayer.css" media="print" onload="this.media='all'">
<!--
所有第三方大库统一使用 defer:
- 不阻塞 HTML 解析与首屏渲染(解决白屏)
- 保持脚本执行顺序(cesium/hls/veplayer 先于 main.tsx 执行)
-->
<script defer src="/js/jswebrtc.min.js"></script>
<script defer src="/js/cesium.js"></script>
<script defer src="/js/hls.js"></script>
<script defer src="/js/veplayer.js"></script>
<style>
/* 首屏加载占位,避免白屏 */
#app-splash {
position: fixed;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
background: #0a1929;
color: #fff;
font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
z-index: 9999;
}
#app-splash .spinner {
width: 42px;
height: 42px;
border: 4px solid rgba(255, 255, 255, 0.2);
border-top-color: #1890ff;
border-radius: 50%;
animation: app-spin 0.8s linear infinite;
}
#app-splash .tip {
font-size: 14px;
opacity: 0.8;
}
@keyframes app-spin {
to {
transform: rotate(360deg);
}
}
</style>
</head>
<body>
<div id="root">
<!-- 首屏 loading 占位,React 挂载后会被替换 -->
<div id="app-splash">
<div class="spinner"></div>
<!--<div class="tip">系统加载中...</div>-->
</div>
</div>
<script type="module" src="/src/main.tsx"></script>
<script>
// 等页面加载完成后,再异步加载地图/视频库,不阻塞首屏
window.addEventListener('DOMContentLoaded', () => {
const loadScript = (src) => {
return new Promise((resolve) => {
const s = document.createElement('script');
s.src = src;
s.async = true;
s.onload = resolve;
document.body.appendChild(s);
});
};
// 按顺序加载
Promise.resolve()
//.then(() => loadScript('/js/jswebrtc.min.js'))
//.then(() => loadScript('/js/jswebrtcnew.js'))
//.then(() => loadScript('https://cdn.jsdelivr.net/npm/cesium@latest/Build/Cesium/Cesium.js'))
.then(() => {
console.log('✅ 所有地图/视频SDK加载完成');
window.CESIUM_BASE_URL = "https://cdnjs.cloudflare.com/ajax/libs/cesium/1.114.0/";
});
});
</script>
</body>
</html>