检查文件大小——文件存储在服务器上(未上载!);在没有AJAX请求的情况下使用JavaScript

检查文件大小——文件存储在服务器上(未上载!);在没有AJAX请求的情况下使用JavaScript,javascript,ajax,filesize,Javascript,Ajax,Filesize,就像在标题中一样。使用jQuery,甚至简单的JavaScript代码,我可以获得特定页面使用的所有脚本(CSE和图像)的表,我正在寻找,是否有任何解决方案可以获得每个资源文件的大小 我想我在这里做了一个很好的研究。大多数答案都是关于上传到服务器上的文件、正在上传的文件或刚刚上传之前的文件,所以这不是我想要的。HTML5中引入了一些支持,但同样,它似乎只支持上传的文件 当然,我正在寻找一个跨浏览器的解决方案,所以使用旧IE中引入的一些蹩脚的文件对象也不是我想要的。另外,请允许我强调,我所说的仅仅

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

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

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

我发现了,但它使用AJAX请求来解决问题。虽然它非常有趣(发送HEAD类型的请求),但它可能不能在所有服务器上工作(但由answer的作者测试过,所有主要浏览器都支持它)。对于在每个分析页面上找到的每个资源,我都会发出AJAX请求,这让我有点激动


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

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

document.getElementsByTagName('script')[0].text.length //works for inline scripts
对于外部脚本,
.src
属性引用了另一个文件/资源,则存在安全约束问题,除非您允许在您的脚本中使用它们。如果外部脚本与您试图捕获它们的页面来自同一个域,则可以

我创建了一个示例来演示如何获取其内容长度

于2007年20月更新

Firebug有自己的功能来拦截扩展的页面加载


问题应该让您了解如何使用Mozilla附加API实现这种拦截器。

谢谢您的回答。我将在几天内接受你的答案,如果没有其他答案,即使它违反了我在问题中所写的内容(第三个pragraph结尾)——再次获取文件(使用AJAX)只是为了获取文件的大小,这不是很有趣。主要是因为它会生成大量额外的请求,并且实际上会大大增加服务器负载。对不起,我误解了第3段,认为使用GET将是一个可接受的替代方案,因为有些服务器配置为不发送内容长度响应头。