2013-08-09 4 views
6

私は、現在のページにどのアイテムがロードされているかを把握する間隔を設けたいと思っています。たとえば、CSSファイル、スクリプト、写真、Flashビデオプレーヤーを読み込み、Flashビデオプレーヤーがビデオファイルを読み込むページがあるとします。ロードされる要素は、ページと同じドメインからのものでも、そうでないものであってもかまいません。それらの一部は、ajaxやフラッシュで読み込まれ、ページ上にタグがありません。私はそれぞれを追跡し、それらに関する情報を格納する配列を作りたいと思います。JavaScriptを使用してWebページに読み込まれた外部リソースをリストすることはできますか?

私は、この擬似コードに似た何かをするスクリプトを持っているしたいと思います:

var all_external_resources = array(); 

setInterval(function() { 
    var external_items = list_external_resources(); 
    for (var i in external_items) { 
    if (all_external_resources.indexOf(external_items[i]) < 0) 
     all_external_resources.push(external_items[i]); 
    } 
}, 100); 

これは可能でしょうか?

+0

私たちは、通常、さまざまなものが読み込まれるときにいくつかの関数のコールバックでこれを行います。同じことをする非同期の方法です。一度あなたはそれの周りにあなたの頭を包み、その甘い。 –

+0

これを拡張してもいいですか? – Marty

+0

質問を正しく理解できれば、それは不可能です。すべてのリクエストは開発者ツールを使用して表示できますが、JavaScriptを使用して監視することはできません。これはセキュリティ上の懸念です。たとえば、広告などの第三者のjsコードを考えてみてください。 – bfavaretto

答えて

8

あなたはおそらくリソース名を取得するためにResource Timingを使用することができます。

var resources = window.performance.getEntriesByType("resource"); 
resources.forEach(function (resource) { 
    console.log(resource.name); 
}); 

それはNavigation TimingCan I use...)の延長だと多くのブラウザでサポートされています。

+0

興味深いことに、私はこの考え方を検討します。 – Marty

+0

これは間違いなくうまくいきます!残念ながら、ブラウザのサポートはまだありませんが、これは間違いなくこの質問の良い答えです。 – Marty

関連する問題