2009-06-09 5 views
2

Ich frage mich, ob ich irgendwie den Speicherort des Skripts herausfinden kann und nicht die Seite, von der es aufgerufen wird. z.B. Wenn die Seite http://xxx.yyy.com/a.htm ist und ich location.href schreibe, bekomme ich diesen Ort anstelle von http://aaa.zzz.com/script.js, wo sich das Skript befindet. Ist es möglich, den Speicherort des Skripts zu erhalten?Ermitteln Sie den Speicherort des Skripts, nicht die Seite, von der es aufgerufen wird

Vielen Dank für Ihre Zeit.

+0

Alter, ich habe noch nie darüber nachgedacht, das zu versuchen ... gute Frage, warum willst du das machen? –

+0

Ich versuche Benutzern zu ermöglichen, direkt zu meinem Skript (von jeder Seite von Drittanbietern) zu verbinden und es verwendet einige Komponenten von meiner Website, weshalb ich es brauche, weil Benutzer schließlich das Skript herunterladen und verwenden können es auch auf verschiedenen Servern. –

+0

Möchten Sie sicherstellen, dass alle Ressourcen in Ihr Skript geladen sind? Sie könnten Ihr Skript immer so etwas wie YUIs Get Utility oder jQuerys GetScript aufrufen lassen, um sicherzustellen, dass Dinge geladen werden. – ajm

Antwort

1

Kurze Antwort: Nein.

Lange Antwort: Sie könnten eine Schleife über alle Elemente in der Seite, eine absolute URI für jeden berechnen, dann machen Sie eine JSON-P-Anforderung an einen Script Server-Seite auf ein Server, den Sie steuern, der jedes Skript herunterlädt und es mit einer Masterkopie — vergleicht, aber das würde brechen, wenn das Skript in irgendeiner Weise geändert würde. Mit einem intelligenteren Vergleichsalgorithmus könnte eine robustere Lösung erreicht werden, aber Sie werden niemals 100% ige Zuverlässigkeit erhalten (da möglicherweise zwei Kopien desselben Skripts enthalten sind, die Sie nicht unterscheiden könnten).

0

Sie können immer das Skript-Tag selbst greifen und das src-Attribut analysieren.

var scripts = document.getElementsByTagName('script'); 
for(var i = 0; i < scripts.length; i++){ 
    alert(scripts[i].src); 
} 
+0

Wahr, aber woher wissen Sie, in welchem ​​Skript der Code ist? Ich habe mehrere Skripte auf jeder Seite (naja ... vor kurzem habe ich sie gebündelt ...) und Sie würden nicht in der Lage sein zu sagen, in welcher Datei das JavaScript definiert wurde. –

+0

Ja, ich kam zu dem gleichen Ergebnis. Davids Idee, einen Ausschnitt zu schnappen und dies gegen einen Code-Repo zu prüfen, wird dein bestes sein. – ajm

1

Ich musste genau das gleiche jetzt tun und kam mit einer etwas anderen Lösung, die gut für mich funktioniert. Besitzen Sie die Seite, auf die das Skript referenziert wird? Wenn ja, können Sie diesem Skriptelement eine ID zuweisen. Dann können Sie in Ihrer Javascript-Datei dieses Element abrufen und das Attribut "src" für die Domäne parsen.

Verwandte Themen