• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

[Javascript] Background-Image URL bekommen

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Liebe Community!

Ich versuche gerade, via JavaScript die URL des Background-Images eines DIV zu bekommen.
Habe bisher folgenden Code geschrieben:
Code:
[COLOR=#bb2510]function[/COLOR] getURL(){
    $string = document.getElementById([COLOR=#9736b8]"overlay2"[/COLOR]).style.backgroundImage;
    $string = $string.slice([COLOR=#053df5]4[/COLOR], (- [COLOR=#053df5]1[/COLOR]));
    alert($string);
    [COLOR=#bb2510]return[/COLOR] $string;
}

Das funktioniert an sich auch.
Nur habe ich folgendes Problem damit:
Im Quelltext steht ein relativer Pfad (img/a.jpg).
Durch diese Funktion wird mir allerdings den absoluten Pfad (http://localhost/gal/img/a.jpg) zurück.

Wie kann ich es schaffen, dass JavaScript mit den relativen Pfad gibt?
Ich kann für den weiteren Code leider nur den verwenden…


Vielen Dank und Liebe Grüße
 

wdominik

Weißer Winterglockenapfel
Registriert
15.01.10
Beiträge
880
Wofür brauchst Du denn den relativen Pfad? Also vielleicht ist es einfacher das Problem anders anzugehen bzw. zu umgehen. ;)

Was Du natürlich machen könntest, ist den Pfad des Dokuments über JS zu holen, also z. B. http://localhost/gal/index.html. Den könntest Du bis zum letzen / filtern, so dass Du z. B. http://localhost/gal/ bekommst. Jetzt könntest Du quasi http://localhost/gal/ mit http://localhost/gal/img/a.jpg vergleichen und den übereinstimmenden Part filtern, dann bliebe img/a.jpg raus, was Du ja letztendlich erreichen möchtest. Das ganze hat natürlich die Einschränkungen, dass sich das Bild immer auf der selben oder einer tieferen Ebene als das Dokument im Pfad befinden muss. Also ../../img/a.jpg würde nicht ohne weiteres funktionieren, da wäre dann noch etwas mehr parsing nötig.

Was spricht gegen die weitere Nutzung der absoluten Pfade?
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Na im Quelltext steht das ganze als relativer Pfad.
Und per JavaScript bekomme ich einen absoluten Pfad raus.
Das fand ich nur komisch, da ich aus einem array die anderen Pfade hab. Und dann hatte ich irgend einen Fehler...

Ich hab das jetzt anders gelöst: ich hab einfach per PHP absolute Pfade in das Array übertragen, so gehts jetzt auch.

Nicht, was ich mir vorgestellt hab, aber es funktioniert :)
 

seaker

Empire
Registriert
19.04.10
Beiträge
88
Soweit ich weiss kannst du mir Javascript dir nur die umgesetzten Informationen abrufen. Du greifst ja mit deinem Code nicht auf die CSS Datei zu sondern auf die im Browser für das Element geladene CSS-Eigenschaft. Und die hat in der Regel immer absolute Pfade.

Um den Quelltext der CSS Datei auszulesen müsstest du die Datei öffnen mit einem Filereader , wobei du dann wiederum das Problem bekommst mit dem im Client ausgeführten Code auf die auf dem Server liegen.

Von daher denke ich, ist die schnellere Variante, wie du es schon gemacht hast, entweder das array anzupassen oder aus dem absoluten Pfad dir in JS einen relativen zu basteln wenn du den brauchst. Da die Datei ja in der Regel immer als letztes steht brauchst du dann ja meistens nur den Dateinamen und den direkt davor stehenden Ordner.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Das ist so nicht ganz richtig.
Im Webinspektor von Safari wird doch sicherlich der umgesetzte Code angezeigt, oder?!
Code:
<div id="overlay2" style="background-image:img/a.jpg;"></div>[CODE]
Steht da drin.

Ist ja aber dann auch nicht so wichtig, da ich es ja auch schon lösen konnte :)


Trotzdem danke, Leute! :)