JavaScript 页面加载等待进度条是一种用于提升用户体验的界面元素,它在网页内容加载过程中显示,告知用户页面正在加载,并且预计还需要多久才能完成加载。这种进度条通常是从页面的顶部到底部的一条动态变化的线条,有时也会配合一些文本提示,如“正在加载,请稍候…”。
以下是一个简单的确定型进度条的实现示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Progress Bar Example</title>
<style>
#progressBar {
width: 100%;
background-color: #ddd;
}
#progress {
width: 0%;
height: 30px;
background-color: #4CAF50;
text-align: center;
line-height: 30px;
color: white;
}
</style>
</head>
<body>
<div id="progressBar">
<div id="progress">0%</div>
</div>
<script>
function move() {
var elem = document.getElementById("progress");
var width = 0;
var id = setInterval(frame, 10);
function frame() {
if (width >= 100) {
clearInterval(id);
} else {
width++;
elem.style.width = width + '%';
elem.innerHTML = width + '%';
}
}
}
window.onload = move;
</script>
</body>
</html>
问题:进度条不更新或更新不正确。
原因:
解决方法:
window.onload
或其他相关事件已正确绑定到进度条更新函数。fetch
API)来避免网络请求阻塞,并在每次数据接收后更新进度条。示例代码修正:
// 假设我们有一个异步加载数据的函数
async function loadData() {
const response = await fetch('your-data-endpoint');
const data = await response.json();
// 处理数据...
}
// 更新进度条的函数
function updateProgressBar(percentage) {
const progressBar = document.getElementById('progress');
progressBar.style.width = percentage + '%';
progressBar.innerHTML = percentage + '%';
}
// 监听数据加载过程中的进度事件(如果可用)
fetch('your-data-endpoint').then(response => {
const reader = response.body.getReader();
const contentLength = +response.headers.get('Content-Length');
let receivedLength = 0;
while (true) {
const { done, value } = await reader.read();
if (done) break;
receivedLength += value.length;
updateProgressBar((receivedLength / contentLength) * 100);
}
});
// 页面加载完成后开始加载数据
window.onload = () => {
loadData();
};
通过这种方式,进度条可以根据实际的数据加载进度进行更新,从而提供更准确的用户体验。
领取专属 10元无门槛券
手把手带您无忧上云