gpt4 book ai didi

javascript - 计算并显示页面加载进度百分比

转载 作者:太空狗 更新时间:2023-10-29 14:42:03 27 4
gpt4 key购买 nike

我有一个加载程序,它在页面开始加载时加载。我需要在其中显示完成百分比。

我的应用程序包含很多 jquery 和 css,它还包含一个 ajax 调用。

到目前为止,我已经在页面加载开始时显示进度条,并在 ajax 成功完成时隐藏它。

此外,我已经显示了百分比,但使用以下代码手动增加了它:

function timeout_trigger() {
$(".progress").css("max-width", p + "%");
$(".progress-view").text(p + "%");
if (p != 100) {
setTimeout('timeout_trigger()', 50);
}
p++;
}
timeout_trigger();

这里的问题是,在进度达到 100 之前,页面加载并显示内容,因此加载器隐藏在中间,比如说 - 在 60% - 加载器被隐藏。

我想动态计算页面加载完成的百分比(即 jquery 加载时间、css 加载时间等)并相应地增加进度。

请帮助解决这个问题..

最佳答案

你可以使用这个:

来源:Display a loading bar before the entire page is loaded

脚本

<script>
;(function(){
function id(v){ return document.getElementById(v); }
function loadbar() {
var ovrl = id("overlay"),
prog = id("progress"),
stat = id("progstat"),
img = document.images,
c = 0,
tot = img.length;
if(tot == 0) return doneLoading();

function imgLoaded(){
c += 1;
var perc = ((100/tot*c) << 0) +"%";
prog.style.width = perc;
stat.innerHTML = "Loading "+ perc;
if(c===tot) return doneLoading();
}
function doneLoading(){
ovrl.style.opacity = 0;
setTimeout(function(){
ovrl.style.display = "none";
}, 1200);
}
for(var i=0; i<tot; i++) {
var tImg = new Image();
tImg.onload = imgLoaded;
tImg.onerror = imgLoaded;
tImg.src = img[i].src;
}
}
document.addEventListener('DOMContentLoaded', loadbar, false);
}());
</script>

HTML(在正文开头或结尾)

<div id="overlay">
<div id="progstat"></div>
<div id="progress"></div>
</div>

CSS

#overlay{
position:fixed;
z-index:99999;
top:0;
left:0;
bottom:0;
right:0;
background:rgba(0,0,0,0.9);
transition: 1s 0.4s;
}
#progress{
height:1px;
background:#fff;
position:absolute;
width:0;
top:50%;
transition: 1s;
}
#progstat{
font-size:0.7em;
letter-spacing: 3px;
position:absolute;
top:50%;
margin-top:-40px;
width:100%;
text-align:center;
color:#fff;
}

关于javascript - 计算并显示页面加载进度百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33820979/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com