2012-11-07 12 views
31

Ich habe eine Javascript-Datei mit dem Namen main.js.Wie bekomme ich den absoluten Pfad des aktuellen Javascript Dateinamens

Innen main.js ich den absoluten Pfad dieser aktuellen Datei, so etwas wie erhalten mag:

http://server/app/main.js 

http://server/app/script/main.js 

Was ist der schnellste Weg, um den absoluten Pfad zu bekommen?

var scripts = document.getElementsByTagName("script"); 

Für jedes Element in der zurück scripts Array Sie seine src Attribut zugreifen können:

Antwort

37

Sie können Skriptsammlung untersuchen.

Die aktuell ausgeführte Include-Datei ist immer die letzte im Array scripts. So können Sie auf scripts[scripts.length-1] zugreifen.

dieser Kurs wird nur zum Zeitpunkt des ursprünglichen Code Laufes arbeiten und nicht zum Beispiel in einer Funktion nützlich sein, die nach dem ersten Skript aufgerufen wird, geladen wird, so dass, wenn Sie den Wert später zur Verfügung benötigen, würden Sie brauchen, um es zu retten zu einer Variablen.

+0

Dank, das ist, was ich – hguser

+0

wollen Wird es funktionieren, wenn wir mehrere Dateien enthalten sind, ... wie wird dann jede js-datei ihren eigenen src-weg zeigen? – xxbinxx

+0

Beachten Sie, dass Sie möglicherweise ein anderes Mittel verwenden möchten, um das gewünschte Skript aus dem Array 'scripts' zu entfernen. Ich benutze diese Methode, habe aber Berichte, dass es in Firefox (blegh ...) so oft zu einem anderen Skript kommt, das zu der Zeit geladen wurde, als meine Logik diese Anordnung von Elementen ergreift. Die schlaue Sache zu tun wäre, wie die letzten 3 oder so zu greifen und durch sie zu durchlaufen und finden Sie die mit dem Dateinamen, den Sie suchen. –

21

den aktuellen Pfad der JavaScript-Datei Get

Setzen Sie diese in Ihrem Apache-Verzeichnis unter/tmp und nenne es test.html. Besuchen Sie die URL

localhost/grader/test.html?blah=2#foobar 

Javascript:

<html> 
<script> 
    alert(location.pathname); // /tmp/test.html 
    alert(location.hostname); // localhost 
    alert(location.search); // ?blah=2 
    alert(document.URL);  // http://localhost/tmp/test.html?blah=2#foobar 
    alert(location.href);  // http://localhost/tmp/test.html?blah=2#foobar 
    alert(location.protocol); // http: 
    alert(location.host);  // localhost 
    alert(location.origin); // http://localhost 
    alert(location.hash);  // #foobar 
</script>        
</html> 

Mehr Informationen über Attribute Standort der Immobilie: http://www.w3schools.com/jsref/obj_location.asp

Oder wenn Sie Jquery haben:

<html> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"> 
</script> 
    $(location).attr('href');  // http://localhost/tmp/test.html?blah=2#foobar 
    $(location).attr('pathname'); // /tmp/test.html 
</script> 
</html> 
1

Dies funktioniert. Es erfordert jedoch, dass Sie bereits wissen, wie der Dateiname des Skripts ist. Aber in den meisten Situationen würden Sie das wissen.

function absFileLoc(filename) { 
    var scriptElements = document.getElementsByTagName('script'); 
    for (var i = 0; i < scriptElements.length; i++) { 
    var source = scriptElements[i].src; 
    if (source.indexOf(filename) > -1) { 
     var location = source.substring(0, source.indexOf(filename)) + filename; 
     return location; 
    } 
    } 
    return false; 
} 
+0

Hier ist die Funktion zusammen mit einer, die die absolute Position von CSS-Dateien bekommt. https://gist.github.com/jamrizzi/44bac4240057b4a89a2d918d05680e3d – jamrizzi

-2

die Sie interessieren, wenn Sie den aktuellen Dateinamen oder Verzeichnis

location.href.split('/')[ location.href.split('/').length - 1 ];

+0

location.href ruft die URL der aktuellen Webseite ab, nicht die aktuell laufende JavaScript-Datei. – CpnCrunch

+0

wir bekommen zuerst die URL, dann teilen Sie es, um das gewünschte Teil zu bekommen. location.href.split ('/') [0]; // erhält den ersten Teil location.href.split ('/') [location.href.split ('/'). length - 1]; // erhält den Dateinamen – Amr

+0

Nein, das ist falsch. Sie erhalten die URL der Seite, nicht die aktuelle JavaScript-Datei. Wenn Sie diesen JavaScript-Code in eine Datei www.abc.com/file.js einfügen, die in www.def.com/page.html enthalten ist, wird location.href www.def.com/page.html zurückgeben. Die Frage ist, wie man den Namen der Javascript-Datei, d. H. Www.abc.com/file.js, erhält. – CpnCrunch

0

Ich weiß, das ist eine ältere Frage erhalten möchten, aber immer noch aktuell, weil IE noch nicht bietet Skript src.

Die beste Form ich war dem Script-Tag eine eindeutige ID zu geben:

<script id="kuvaScript" src="jscripts/kuva/kuva.min.js"></script> 

Im Innern des Skript i verwenden:

var thisScript = $("#kuvaScript").attr("src"); 
    var thisPath = thisScript.split('/').slice(0, -1).join('/')+'/'; 

Es wird das src-Format halten, wie es (relativ oder komplett) und wurde in IE und Chrome getestet.

Ich hoffe, es spart Ihnen viel Zeit.

0

Sehr einfach

dieses in der * .js Datei, die Sie wollen Weg zu bekommen:

let scripts = document.getElementsByTagName('script') 
let lastScript = scripts[scripts.length -1] 
console.log('lastScript', lastScript.src) 
Verwandte Themen