正在计算页面上加载的所有资源
Calculating all resources loaded on page
我正在加载一个包含CSS+图像+脚本的页面。所以我想在页面加载的运行时计算加载到页面上的所有资源总数,这样我就可以根据这些计算和一点加载时间显示进度条。
我的问题是如何计算有多少资源实际加载到dom中,包括图像+脚本+css文件。在此基础上,我需要计算进度条进度模式并使其继续进行。
有人能告诉我们怎么做吗?
没有直接的方法可以做到这一点。脚本和图像标记具有加载事件,因此您可以附加回调并知道何时加载它们。Css没有可查询的事件或属性,但是您可以使用img标记来解决问题。但这并不是那么简单,因为如果您将回调附加到已经加载的脚本标记,那么该回调将永远不会启动,img标记也是如此。因此,当您的进度条开始跟踪文档上的所有img/script/css时,它需要知道哪些img/script/css已经加载,然后为其他尚未加载的内容附加一个事件回调。Img标记有complete
属性,但脚本没有,所以您无法通过简单地查询DOM来知道脚本是否已加载。Css更巧妙。
好吧,正如你所看到的,这不是一项简单的任务,实际上它很复杂,就我个人而言,我不认为仅仅为了显示进度条而花费时间和精力是值得的。
在你的页面中显示一个古老而好的旋转,并感到高兴:)
总数为:
$('script, link[type=text/css], img').size();
这将返回您请求的资源总数。
这是一个Vanilla Javascript,在@Alaa Badran的答案之后有更完整的答案
它只计算页面的元素数量,但您可以根据它创建一个计数器来获取还有多少元素需要加载。
它统计所有加载的CSS样式表以及所有支持用";src";属性(因此它避免计算"占位符"元素,最初不加载外部内容)
function countElementsLoadingContent() {
// Counts the number of elements loading content on the page
const htmlTagsLoadingContent = [
"img",
"script",
"video",
"audio",
"iframe",
"source",
"track",
"embed",
"object"
]
const elements = document.querySelectorAll(htmlTagsLoadingContent.join(','))
let elementsWithSrc = 0
for (let i = 0; i < elements.length; i++) {
if (elements[i].src) {
elementsWithSrc++
}
}
const cssLinks = document.querySelectorAll('link[rel="stylesheet"]')
const totalElements = elementsWithSrc + cssLinks.length
console.log(`Total elements on the page that load content: ${totalElements}`)
return totalElements
}
我认为你处理这个问题的方式不对。。。
如果你的页面太大,需要一个进度条,那么它可能太大了。
为什么不优化页面,使其快速开始渲染,然后添加其他项目,例如渐进加载或延迟加载。
- ADF:有条件地加载javascript资源
- 内容安全策略:页面's设置阻止加载资源
- 未能在Laravel中加载资源
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- js文件未加载js控制台say's”;不允许加载本地资源”;
- UIWebview赢得't通过基本身份验证加载动态加载的资源(通过jQuery mobile)
- AngularJS资源 - 加载多个资源
- 将 JSON 作为 HTML 中的资源加载以避免引导 ajax
- XMLHttp请求与“;html标签“;资源加载
- Rails资源:加载顺序
- 资源加载不正确,图像部分加载
- 如何防止Chrome中未附加元素的资源加载
- 如何在复杂的资源加载序列中正确链化承诺
- Rails混淆了js对实际路由的资源加载,并将其作为控制器动作处理
- 当异步资源加载完成时触发的Javascript事件
- 将静态jsp资源加载到产品index.html中
- 从外部或内部资源加载库,脚本等网站
- 当我尝试使用ajax时,chrome的控制台显示“资源加载失败”
- templateUrl资源加载不能使用webpack
- 当外部JavaScript或CSS资源加载失败时,检测并记录