knowledgebase_law/index.html

176 lines
7.0 KiB
HTML
Raw Permalink Normal View History

2025-04-11 23:47:09 +08:00
<!DOCTYPE html>
2025-04-13 01:32:20 +08:00
<html lang="zh-CN">
2025-04-11 23:47:09 +08:00
<head>
<meta charset="UTF-8" />
2025-04-13 01:37:11 +08:00
<link rel="icon" type="image/jpeg" href="http://www.zzlawfirm.cn/upload/202004/1586226141.jpg" />
2025-04-11 23:47:09 +08:00
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>北京中兆律师事务所 智能知识库</title>
2025-04-13 01:32:20 +08:00
<!-- 预加载视频文件,设置最高优先级 -->
<link rel="preload" href="OpenDoor.mp4" as="video" type="video/mp4" fetchpriority="high">
<style>
/* 加载动画全屏覆盖 */
#root-loading {
position: fixed;
z-index: 9999;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #A32B23; /* 使用律所的红色背景 */
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
/* 确保视频填满屏幕 */
#door-animation-video {
width: 100%;
height: 100%;
object-fit: cover; /* 使用cover确保填满整个屏幕 */
}
/* 备用加载动画 */
.backup-loader {
width: 80px;
height: 80px;
border: 8px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: #fff;
animation: spin 1s linear infinite;
display: none;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
/* React容器初始隐藏 */
#root {
display: none;
}
</style>
2025-04-11 23:47:09 +08:00
</head>
<body>
2025-04-13 01:32:20 +08:00
<!-- 加载动画容器 -->
<div id="root-loading">
<!-- 用视频替换GIF视频可以设置不循环 -->
<video
id="door-animation-video"
autoplay
muted
playsinline
disablePictureInPicture
disableRemotePlayback
preload="auto"
>
<source src="OpenDoor.mp4" type="video/mp4">
<!-- 备用GIF如果视频无法播放 -->
<img id="door-animation" src="OpenDoor.gif" alt="Loading..." style="width:100%; height:100%; object-fit:cover;" />
</video>
<div class="backup-loader" id="backup-loader"></div>
</div>
<!-- React应用容器 -->
2025-04-11 23:47:09 +08:00
<div id="root"></div>
2025-04-13 01:32:20 +08:00
<script>
// 优化视频播放的主脚本
document.addEventListener('DOMContentLoaded', function() {
// 获取元素引用
var video = document.getElementById('door-animation-video');
var backupLoader = document.getElementById('backup-loader');
var isVideoPlayed = false;
var videoLoadStartTime = Date.now();
// 视频加载时间监控
var loadTimeout = setTimeout(function() {
// 如果5秒后视频仍未开始播放显示备用加载器
if (!isVideoPlayed && !video.currentTime) {
console.warn('视频加载时间过长,准备备用方案');
}
}, 5000);
// 视频元数据加载完成后隐藏静态首帧
video.onloadedmetadata = function() {
console.log('视频元数据已加载');
};
// 视频可以播放时(已缓冲足够数据)
video.oncanplay = function() {
console.log('视频可以开始播放');
clearTimeout(loadTimeout);
};
// 处理视频加载错误
video.onerror = function() {
console.error('无法加载开门动画视频', video.error);
clearTimeout(loadTimeout);
var doorAnimation = document.getElementById('door-animation');
if (doorAnimation) {
doorAnimation.style.display = 'block';
doorAnimation.onerror = function() {
doorAnimation.style.display = 'none';
backupLoader.style.display = 'block';
};
} else {
backupLoader.style.display = 'block';
}
// 5秒后无论如何都显示应用
setTimeout(function() {
window.doorAnimationCompleted = true;
if (window.reactAppReady) {
showReactApp();
}
}, 5000);
};
// 监听视频播放结束事件
video.onended = function() {
if (!isVideoPlayed) {
isVideoPlayed = true;
console.log('视频播放完成');
// 记录视频加载到播放完成的总时间
var totalTime = Date.now() - videoLoadStartTime;
console.log('视频总播放时间: ' + totalTime + 'ms');
// 通知main.jsx视频已播放完成
window.doorAnimationCompleted = true;
// 如果React已经准备好显示应用
if (window.reactAppReady) {
showReactApp();
}
}
};
// 函数显示React应用
window.showReactApp = function() {
var rootElement = document.getElementById('root');
var loadingElement = document.getElementById('root-loading');
if (rootElement) rootElement.style.display = 'block';
if (loadingElement) loadingElement.style.display = 'none';
};
// 确保视频加载失败或其他意外情况下,应用最终会显示(安全措施)
setTimeout(function() {
if (!window.doorAnimationCompleted) {
console.warn('应用显示安全措施触发');
window.doorAnimationCompleted = true;
if (window.reactAppReady) {
showReactApp();
}
}
}, 12000); // 12秒后无论如何都显示应用
});
</script>
2025-04-11 23:47:09 +08:00
<script type="module" src="/src/main.jsx"></script>
</body>
</html>