2012-07-19 70 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

相關問題