Hi,
ich befinde mich in einer per <script src> eingebundenen JavaScript-Ressource und möchte ermitteln, wie "meine" URL ist - also die des Scripts. Ich weiß, dass die Einbindung im <head> eines HTML-Dokuments geschehen ist, aber sehr viel mehr ist mir nicht bekannt.
Mein erster Ansatz war, das lastChild des <head>-Elements zu ermitteln und dessen src-Attribut mit dem location.href des Dokuments zu kombinieren[1]. Das funktioniert soweit auch ganz gut - sofern ich mich auf halbwegs aktuelle Browser beschränken kann. Ein Opera 7.54 lieferte aber leider ein <meta>-Element, welches drei Elemente vorher im Code steht. Bin begeistert[tm].
Den zweiten Ansatz hatte ich wegen des IE eigentlich schon vorher ausgeschlossen: Per try/catch habe ich einen Fehler forciert und das Error-Objekt analysiert. Gecko liefert mir auch brav eine sinnbehaftete fileName-Eigenschaft[2], aber der IE ... nun, wir kennen seine Fehlermeldungen. Opera 7.54 liefert mir die URL in der message-Eigenschaft - ist das Zufall oder Absicht? Falls letzteres, kann ich die beiden Ansätze _sicher_ kombinieren? Oder anders gefragt: Wie erfahre ich, ob der Browser das richtige Element liefert?
Natürlich wäre es mir am liebsten, wenn es einen direkteren Weg zur URL gäbe. Ich habe keinen gefunden - 'this' ist das Fenster, und andere Objekte lieferten mir auch keine Idee. Hat jemand das Problem schon einmal erfolgreich gelöst und/oder kann mir einen Schubs in die richtige Richtung geben?
Cheatah
[1] Für diese Verschmelzung zweier URIs gibt es ganz sicher bereits ausgetestete Bibliotheken. Da ich eh gerade poste: Kann mir jemand eine empfehlen?
[2] Sofern der Fehler über "hilfedalaeufteinemausueberdietastatur()" geschieht. Bei "throw new Error()" steckt der Filename im Stack an zweiter Stelle, während der erste Eintrag die URL des HTML-Dokuments mit Zeilennummer 0 ist. Wer mir verraten kann, warum dem so ist, kann sämtliche Tippfehler behalten, die sich in diesem Posting befinden. Zum Beispiel deise heir.
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes