Moin!
Und zwar möchte ich via JS nach dem Durchlauf einer Funktion ein Hintergrund-Bild bei einem Element anzeigen.
document.all.IDMeinesElements.style.background = "url(" + rootdir + "templates/images/button_background.jpg) no-repeat;";
Warum document.all? Dieses uralte IE-only-Gedöns sollte doch langsam mal auf den Müll fliegen.
Außerdem frage ich mich, wo das Problem liegt.
Da anzunehmen ist, dass sowohl auf dem Testserver als auch auf dem Live-Server die Verzeichnisstruktur identisch ist (wie sollen sonst die Links funktionieren), sollte es durch Angabe der passenden URL keinerlei Probleme geben.
> soweit, so gut. Wenn ich anstatt "rootdir" den entsprechenden Wert meiner Testumgebung ("http://localhost/jstest/") eingebe, dann funktioniert alles prächtig. Nur möchte ich das Webspace-unabhängig machen und diese Adresse irgendwie ermitteln lassen.
Das bedeutet also, auf dem Testserver liegt das Hintergrundbild unter
http://localhost/jstest/templates/images/button\_background.jpg
Und wo liegt sie auf dem Live-System?
> Ich nehme an, mit dem client-seitigen JS wird das nicht funktionieren, da das doch nur das sieht, was man auch als normaler Benutzer sieht (oder zumindest theoretisch sehen könnte), oder?
Was serverseitig an Rewriting passieren könnte (man weiß es ja nur, wenn man es selbst eingerichtet hat), ist irrelevant für dein Javascript!
Javascript kann nur auf URLs zugreifen. Und die müssen stimmen, egal was hinterher mit Rewriting läuft.
Finde heraus, welche URL du benötigst, um dein Hintergrundbild zu laden. Relative URLs sind dabei denkbar, auch absolute und server-absolute Angaben funktionieren - letztere sind aber, da man dort den Servernamen fest angibt, eher unpraktisch.
Aber beispielsweise mit
~~~javascript
document.getElementById(IDMeinesElements).style.background = "url(/jstest/templates/images/button_background.jpg) no-repeat;";
würde es sicherlich funktionieren - auf beiden Servern, solange die URL nach dem Servernamen gleich bleibt.
Wenn nicht, würde ich den Testserver so ändern, dass das danach der Fall ist.
Gibt es in diesem Fall eine Möglichkeit, eine Variable von PHP ($_SERVER['HTTP_HOST'], $_SERVER['SCRIPT_NAME']) zu übertragen?
PHP-interne Dateipfade interessieren dich nicht. Da hat Rewriting gewirkt, vielleicht CGI-Redirects, Alias-Einbindung, interne Datei-Symlinks etc., die alle für Javascript irrelevant sind.
Javascript hat außerdem ein wunderschönes Location-Objekt, welches außer location.href noch diverse weitere Informationen über die aktuell angezeigte Seite bereithält.
- Sven Rautenberg
"Love your nation - respect the others."