Wie kann man code in eine JavaScript-Datei die Datei-URL?
Brauche ich, um dynamisch geladen, ein CSS-stylesheet in eine Seite, die auf eine verschiedenen domain. Wie bekomme ich die vollständige URL der JS-Datei an, in der href - Attribut des stylesheet?
Zum Beispiel, hier ist die Struktur:
http://bla.com/js/script.js
http://bla.com/css/style.css
Möchte ich dynamisch geladen, das stylesheet in eine Seite http://boo.net/index.html. Das problem ist, ich weiß nicht, die bla.com bisschen im Voraus, nur die Tatsache, dass das stylesheet ist in ../css/ relativ zu der JS-Datei.
Das Skript ist natürlich, auf index.html. jQuery ist ja auch in Ordnung.
InformationsquelleAutor montrealist | 2009-08-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie eine ID an das script-tag:
Und in
http://bla.com/js/script.js
:Sollten Sie in der Lage zu manipulieren, um den Wert von
myScriptSrc
zu erhalten, der Pfad zu jedem anderen Inhaltbla.com
.Ich denke, dieses Beispiel ist, was James Black gemeint in seiner Antwort.
Schließlich jeder was auf die Verwendung von
document.location
bitte beachten Sie, dass, wenn Sie wollen, nur-lese-Zugriff auf die aktuelle Adresse der Seite, die Sie verwenden solltendocument.URL
oderwindow.location
. Wenn Sie möchten, legen Sie die Adresse der Seite, sollten Sie immerwindow.location.href
. Obwohlwindow.location = 'location';
funktioniert, es hat mich immer gestört, um zu sehen, eine Zeichenfolge zugewiesen wird, um einen Speicherort. Ich bin mir nicht sicher, warum, weil JavaScript ermöglicht es, alle Arten von anderen impliziten Typ-Konvertierungen.document.location
war ursprünglich ein nur-Lesen-Eigenschaft, obwohl Gecko-Browser können Sie zuweisen, um es als gut. Für cross-browser-Sicherheit, verwenden Sie Fenster.Lage statt. Zum abrufen der URL als string, der nur-lese - Dokument.URL Eigenschaft kann verwendet werden.document
Objekt; verwenden Sie die Dokument.URL - Eigenschaft statt. Diedocument.location
Eigenschaft, die ein synonym fürdocument.URL
, ist veraltet.<script>
. HTML5 macht.InformationsquelleAutor Grant Wagner
Mit Jquery, du könntest etwas wie:
Hervorragende one-liner!
InformationsquelleAutor Toby
Sogar einfacher als mit einem
id
ist, lassen Sie einfach das markup alleine und verwendenDokument.currentScript
. Der link zu MDN erwähnt unter dem Hinweise Abschnitt, eine kleine Eigenart, dass der JavaScript-synchron ausgeführt, und ich bin zu erklären, wie diese Falle zu vermeiden.Der Vorteil dieser Lösung ist, dass Sie nicht erforderlich sind, um spezielle markup, und dies ist besonders hilfreich, wenn Sie keinen Zugriff auf die HTML-sich aus irgendeinem Grund (z.B. wenn es ein client oder ein Entwickler mit der API).
Wenn das Skript synchron ausgeführt (d.h. die wesentlichen Inhalte des Skripts ist nicht eingewickelt in ein Ereignis-listener oder eine andere Funktion zu bewerten, als später, wenn der code "zunächst wird verarbeitet" ), können Sie einfach
document.currentScript
Zugriff auf die aktuell verarbeitet<script>
element Ihres Codes. Um zu zeigen, wie diese effektiv, ich werde bieten ein basic-demo-unten.HTML:
JavaScript in
http://bla.com/js/script.js
:Wenn Sie nicht wollen, dass die variable ausgesetzt werden, um die Globale Reichweite, Sie kann dies auch tun:
Im Grunde der Punkt ist, um sicherzustellen und den Zugang
document.currentScript
während synchrone Ausführung des Skripts, sonst wird es nicht Referenz, was man erwartet.InformationsquelleAutor Patrick Roberts
Als der browser analysiert tags, lädt es auch und führt Sie aus. Deshalb, wenn Sie Ihre JS-Datei ausgeführt wird, ist es derzeit der Letzte tag analysiert.
async
Schlüsselwort.Das ist schrecklich und ich Liebe es. Upvote x 100+
InformationsquelleAutor bradt
Lesen Sie
document.location
, aber Sie konnte auch nur relative URLs verwenden,InformationsquelleAutor bjelli
Sehen Sie im script-tag für die javascript-Standort, und durch die Verwendung von Dokument.Lage könnte Sie wahrscheinlich bestimmen die relative Adressierung verwendet, um zu bestimmen, wo die css-Datei auch sein mag.
InformationsquelleAutor James Black
Stack-Eigenschaft des error-Objekte bieten können URL-Informationen.
Leider Webkit nicht (aber Chrom macht) - support-Stapel-Eigenschaft. Es gibt einige Browser unterstützen diese Funktion: http://173.45.237.168/reference/html/api/Error.html#Error.stack
Anstelle von stack-Webkit bietet sourceURL Immobilie, hier ist die exampe Verwendung:
InformationsquelleAutor sid3k