0

就像在标题中一样。使用 jQuery,甚至是简单的 JavaScript 代码,我可以获得特定页面使用的所有脚本(CSS 和图像)的表格,并且我正在寻找是否有任何解决方案来获取每个资源文件的大小?

我想我在这里做了很好的研究。大多数答案都是关于上传到服务器、正在上传或刚刚上传之前的文件,所以这不是我要找的。HTML5 中引入了一些支持,但同样,它似乎仅适用于上传的文件。

当然,我正在寻找一个跨浏览器的解决方案,所以使用旧 IE 中引入的一些糟糕的文件对象也不是我想要的。另外,请让我强调一下,我只是在谈论检查存储在服务器上的文件的文件大小,可以通过给定的 URL 访问。因此,出于安全原因,请不要写出我无法从 JavaScript访问本地文件之类的答案。我已经知道了。

在 SO 上找到了非常好的解决方案,但它使用 AJAX 请求来解决问题。尽管它非常有趣(发送 HEAD 类型的请求),但它可能不适用于所有服务器(但已由 answer 的作者测试,所有主流浏览器都支持)。对于在每个分析页面上找到的每个资源触发 AJAX 请求,我有点激动。

所以,我假设没有这样的解决方案。如果有人能证明我的假设是错误的,我会很高兴。但是,另一方面,他们如何在 Firebug 中做到这一点?如果我没记错的话,XPI 扩展是用 JavaScript 编写的,对吧?Firebug 确实可以测量当前网站中使用的资源的大小。

4

1 回答 1

1

要验证内联脚本的内容长度,您可以使用它们的.text属性。

document.getElementsByTagName('script')[0].text.length //works for inline scripts

对于外部脚本,其中.src属性引用另一个文件/资源​​,Access-Control-Allow-Origin安全约束存在问题,除非您在浏览器设置中允许它们。如果外部脚本与您尝试捕获它们的页面来自同一域,则可以。

我创建了一个小提琴来演示如何获取它们的内容长度。

20/07 更新

Firebug 有自己的实现来拦截扩展Mozilla.org 观察者服务的页面加载。

问题“自定义 xul:browser 中页面加载的观察者”应该让您了解如何使用 Mozilla Add-on API 实现这种拦截器。

于 2012-07-19T16:51:39.253 回答