2012-07-19 68 views
0

喜欢在标题中。使用jQuery,甚至简单的JavaScript代码,我可以得到特定页面使用的所有脚本(CSS和图像)的表格,而且我正在寻找,是否有解决方案来获取每个资源文件的大小?检查文件大小 - 存储在服务器上的文件(未上传!);使用没有AJAX请求的JavaScript

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

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

我发现quite great solution on SO,但它使用AJAX请求来解决问题。尽管它非常有趣(发送HEAD类型的请求),但它可能无法在所有服务器上运行(但已经被所有主流浏览器支持的答案作者测试过)。而且,我对每个分析过的页面上发现的每个资源都发出AJAX请求感到有些激动。

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

回答

1

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

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

对于外部脚本,其中.src属性是指到另一个文件/资源​​,有一个与Access-Control-Allow-Origin安全约束的问题,除非你让他们在你的browser settings。如果外部脚本与您尝试捕捉它们的页面来自相同的域,则可以。

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

修订版20/07

萤火虫有其own implementation拦截扩展了Mozilla.org observer-service页面加载。

问题'An observer for page loads in a custom xul:browser'应该给你一个关于如何使用Mozilla附加API实现这种拦截器的想法。

+0

感谢您的回复。我会在几天内接受你的回答,如果没有其他人,即使它违反了我所写的问题(第三段结尾) - 再次获取文件(使用AJAX)的想法只是为了得到它的大小,没有那么有趣。主要是因为它会产生很多额外的请求,并且效果会大大增加服务器负载。 – trejder 2012-07-20 06:13:38

+0

对不起,我误解了第三段认为使用GET将是一个可接受的选择,因为一些服务器被配置为不发送Content-Length响应头。 – 2012-07-20 12:34:25

相关问题