2013-08-09 15 views
6

Geçerli sayfada hangi öğelerin yüklendiğini takip eden bir aralığa sahip olmak isterim. Örneğin, bir css dosyası, birkaç komut dosyası, resim, bir flash video oynatıcı yükleyen bir sayfam olduğunu ve flash video oynatıcısının bir video dosyası yüklediğini varsayalım. Yüklenen öğeler, sayfa ile aynı etki alanından olabilir veya olmayabilir. Bazıları ajax veya flash yoluyla yüklenebilir ve sayfada bir etiket bulunmuyor olabilir. Her birinin kaydını tutmak ve onlar hakkında bilgi depolayan bir dizi yapmak istiyorum.JavaScript ile bir web sayfasına yüklenen harici kaynakları listelemek mümkün mü?

bu pseudocode benzer bir şey yapar bir komut dosyası olsun isterim

:

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); 

bu mümkün olabilir mi?

+0

Genellikle, çeşitli şeyler yüklendiğinde bazı işlevler için geri aramalarla yaparız. Aynı şeyi yapmanın asenkron bir yolu. Kafanı etrafına doladıktan sonra, tatlı. –

+0

Bu konuda biraz daha büyüyebilir misiniz? – Marty

+0

Soruyu doğru anlıyorsam, bu mümkün değil. Geliştirici araçlarını kullanarak tüm istekleri görebilirsiniz, ancak bunları JavaScript ile izleyemezsiniz. Bu bir güvenlik kaygısı, inanıyorum (örneğin, bir reklamdan üçüncü taraf js kodunu düşünün). – bfavaretto

cevap

8

Muhtemelen kaynak adları almak için Resource Timing kullanabilirsiniz:

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

O Navigation Timing (Can I use...) uzantısıdır ve birçok tarayıcılarda desteklenir.

+0

İlginç, bu fikre bakacağım. – Marty

+0

Bu kesinlikle iyi çalışıyor! Ne yazık ki tarayıcı desteği henüz yok, ancak bu soru için kesinlikle iyi bir cevap. – Marty

İlgili konular