2009-06-08 21 views
0

Ist es möglich von einem Javascript-Code herauszufinden, "wo" es herkam?Den Ursprung des Javascript finden

brauchte ich diese Skripte zu schaffen, die Ordner-agnostisch, zB laufen konnte:

http://web1/service-a/script.js 
http://web2/some-folder/service-b/script.js 

Und sie sind in verknüpft:

http://web1/page1.html 
http://web2/page2.html 

Die Datei script.js ist an beiden Standorten identisch aber ich möchte, dass sie herausfinden können, woher sie stammen, damit sie die richtigen Web-Service-Methoden aufrufen können (script.js aus dem Service-a sollte service-a.method aufrufen, während script.js aus service-b stammt) sollte Service-b.Method anrufen)

Gibt es eine Möglichkeit herauszufinden, woher script.js kam, ohne serverseitigen Code zu verwenden?

+0

Ich glaube nicht. Aber ich werde herumfragen. –

+0

@the_drow hast du etwas gefunden? – chakrit

Antwort

2

Nun, es ist irgendwie ein Hack, könnten Sie alle <script> Tags im Dokument packen, schauen, an den man die Dateinamen der Datei hat, und von dort aus der Logik tun.

document.getElementsByTagName('script'); ist so ziemlich alles, was Sie brauchen. Der Rest ist Basic JS.

Noch interessanter als durch alle zurückgegebenen Elemente Looping (obwohl das wahrscheinlich sicherste ist), ist, dass wir einfach nur auf dem letzten Element durch den Aufruf oben zurück aussehen, wie Javascript garantiert, dass die <script> Tag sein müssen wir re in zum Zeitpunkt der Analyse (mit Ausnahme von zurückgestellten Skripten). Also dieser Code:

var all_scripts = document.getElementsByTagName('script'); 
var current_script = scripts[all_scripts.length-1]; 
alert(current_script.src); 

Wird die Quelle des Skript-Tags, die verwendet, um die aktuelle Javascript-Datei enthalten.

+0

Ich kann mir vorstellen, dass es in IE nicht funktionieren würde .... aber lass es uns trotzdem versuchen :-P – chakrit

+0

Lass mich wissen wie es geht. :) –

2

Sie können die Quelle des HTML analysieren, wo script.js für den Tag enthalten ist und den Pfad der script.js von dort abrufen. Nehmen Sie die nächste Funktion in script.js auf und verwenden Sie sie, um den Pfad abzurufen.

function getPath() { 
    var path = null; 
    var scriptTags = document.getElementsByTagName("script"); 

    for (var i = 0; i < scriptTags.length; i++) { 
     var scriptTagSrc = scriptTags.item(i).src; 

     if (scriptTagSrc && scriptTagSrc.indexOf("script.js") !== -1) { 
      path = scriptTagSrc; 
      break; 
     } 
    } 

    return path; 
} 
Verwandte Themen