2013-08-09 4 views
6

Ich möchte ein Intervall haben, das verfolgt, welche Elemente auf der aktuellen Seite geladen werden. Angenommen, ich habe eine Seite, auf der eine CSS-Datei, einige Skripte, Bilder und ein Flash-Videoplayer geladen werden. Anschließend lädt der Flash-Videoplayer eine Videodatei. Die geladenen Elemente können von der gleichen Domäne wie die Seite stammen oder nicht. Einige von ihnen können durch Ajax oder Flash geladen werden und haben kein Tag auf der Seite. Ich möchte jeden Überblick behalten und ein Array erstellen, das Informationen über sie speichert.Kann man externe Ressourcen, die auf einer Webseite mit JavaScript geladen sind, auflisten?

Ich mag würde ein Skript haben, die etwas ähnlich wie diese Pseudo-Code tut:

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

dies möglich sein würde?

+0

Wir tun dies normalerweise mit Rückrufen zu einer Funktion, wenn verschiedene Dinge geladen werden. Es ist eine asynchrone Art, dasselbe zu tun. Sobald du deinen Kopf darum wickelst, ist es süß. –

+0

Kannst du das vielleicht erweitern? – Marty

+0

Wenn ich die Frage richtig verstehe, ist das nicht möglich. Sie können alle Anfragen mithilfe von Entwicklertools anzeigen, aber Sie können sie nicht mit JavaScript überwachen. Das ist ein Sicherheitsrisiko, glaube ich (denken Sie beispielsweise an den js-Code von Drittanbietern aus einer Anzeige). – bfavaretto

Antwort

8

Sie können möglicherweise Resource Timing verwenden Ressourcennamen abzurufen:

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

Es ist eine Erweiterung von Navigation Timing (Can I use...) und wird in vielen Browsern unterstützt.

+0

Interessant, ich werde diese Idee untersuchen. – Marty

+0

Nun, das funktioniert definitiv gut! Leider ist die Browser-Unterstützung noch nicht verfügbar, aber das ist definitiv eine gute Antwort auf diese Frage. – Marty

Verwandte Themen