gpt4 book ai didi

javascript - 想要在页面加载时显示类似 YouTube 的进度条

转载 作者:行者123 更新时间:2023-11-28 07:04:23 24 4
gpt4 key购买 nike

我见过一些网站,当页面第一次加载时,会显示类似 YouTube 的进度条。当进度条完成时,页面内容会以淡入淡出的效果显示。网站地址为 https://www.skysite.com/

我检查了很多类似 youtube 的进度条的链接,但这些页面都显示了像你一样的进度条,但它们与页面内容没有关系。

以下是我查阅过的一些链接。

http://stackoverflow.com/questions/18350370/youtube-like-progress-bar
http://onextrapixel.com/examples/youtube-like-ajax-loading-bar/index5.html
http://jsfiddle.net/ajaSB/3/
http://thuru.net/2014/10/05/youtube-like-progress-bar-using-nprogress-js-with-angular-js/
http://ricostacruz.com/nprogress/

请指导我如何显示类似 YouTube 的进度条,当进度完成时,我想显示页面内容。

最佳答案

您所引用的网站正在使用pace - https://github.com/HubSpot/pace/

它监听所有ajax请求和dom加载,并在隐藏页面时显示进度条。一旦所有内容都加载完毕,它就会显示内容。

您可以预览该库的实际运行示例 here (是的,初始力量)

评论更新:

您有 2 个帐户吗?
正如我已经所说,这个库可以做到这一切。它跟踪脚本本身之后加载的每个字节。它轻松可定制,并且有一个清晰文档供您阅读。它允许您监视dom元素加载进度,图像/脚本/ajax内容进度,甚至您的长脚本

如果您只有 html 主页面,那么您应该考虑更改设计并进行小块重构。
如果您不能但仍想跟踪进度,您可以在页面的最顶部放置一个简单的脚本,该脚本将:

  • 使用 ajax 发送同一页面的 HEAD http 请求。只是为了了解您的总页面大小(内容长度标题)。
  • 根据当前页面大小显示进度(跟踪方式有很多,最简单的是 document.firstElementChild.innerHTML.length (不会很精确))
  • 页面加载后,删除进度条

我为您提供了让它发挥作用所需的一切。

编辑2:

我觉得你会要求更多...这是一个 NodeJs 示例。它只是创建一个 http 服务器,并提供一个包含分块内容的页面(并模拟滞后......)。所以整个页面需要时间来加载。JavaScript 实时显示文本进展。

var http = require('http');

function chunked(res, count) {
res.write('<p>Chunked content n°' + count + '</p>');
setTimeout(function() {
if(count > 0)
chunked(res, count - 1);
else
res.end('</body></html>');
}, 1000);
}

function handleRequest(request, response){
response.setHeader('Connection', 'Transfer-Encoding');
response.setHeader('Content-Type', 'text/html; charset=utf-8');
response.setHeader('Transfer-Encoding', 'chunked');


response.write('<html><head><script>\n' +
'var progress = 0; startLength = 825; TotalLength = 1090;\n' +
'function track_progress() {\n' +
' console.log(document.firstElementChild.innerHTML.length);' +
' if(progress > 1000) {' +
' document.body.firstElementChild.innerHTML = "Progress: 100% - Done !";\n' +
' return;\n' +
' }\n' +
' \n' +
' if(document.body) {\n' +
' progress = (document.firstElementChild.innerHTML.length - startLength)* 1000 / (TotalLength - startLength);\n'+
' document.body.firstElementChild.innerHTML = "Progress: " + (Math.round(progress)/10) + "%";\n' +
' }\n' +
' setTimeout(track_progress, 500);\n' +
'}\n' +
'track_progress();\n' +
'</script></head><body><p id="progress">Progress: 0%</p>');

response.write('<p>Starting to send chunked content...</p>');
chunked(response, 10);
}

var server = http.createServer(handleRequest);
server.listen(8080, function(){
console.log("Server listening on: http://localhost:8080");
});

关于javascript - 想要在页面加载时显示类似 YouTube 的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31812836/

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