DrPagel-FavIcon « »

Verfasst am 19.02.2008 23:07:14 Uhr
Auslesen von URL bzw. Pfadnamen aus einem Elementknoten-Attribut href mit Hilfe von Javascript

Der Browser-Krimi. Ist mir egal, ob die Weisheit schon irgendwo auf Webseiten steht, die ich dank google nicht finde. Also ich habe herumprobiert z. Beitrag v.16.2.2008 und bin fündig geworden.

Angenommen, es existiert ein Elementknoten namens Elternknoten. Dies kann z.B. ein Hyperlink (A-Tag) sein, der eine Zeichenkette oder Bilder(kette) als Kindelemente namens Kindknoten einbindet. (Dem W3C-Konsortium werden wohl bald die Begriffe ausgehen?). Dieser Kindknoten könnte in meinem Beispiel z.B. ein Bild (IMG-Tag) sein. Natürlich hat auch das Bild selbst seine Daseinsberechtigung, der durch ein Attribut "src" ausgedrückt wird. Und weil man dies so verschachteln darf, sind wohl für normale Links und Bilder unterschiedliche Attributnamen gewählt worden, "href" bei den A-Tags und "src" bei den IMG-Tags.

Jetzt soll javascript mir Auskunft erteilen, dass der Kindknoten ein IMG-Tag und kein Text ( = #Text) ist. Bei beiden Browsern Firefox und I.E.6. funktioniert dies mit var kindknoten = document .getElementsByTagName('a')[j] .firstChild;

Falls es nur einen Elternknoten A-Tag gäbe, wäre j=0, sonst müsste dies über eine for-Schleife abgefragt werden. Also eine erfolgreiche Anfrage brächte hier als Ergebnis: kindknoten = "IMG". Da es auch mehrere Kindknoten geben könnte, können diese auch als Feldelemente abgespeichert werden.

Angenommen, in diesem Beispiel gäbe es nur ein IMG-Tag, eingebunden unter einem A-Tag (Normalfall). Jetzt möchte man wissen, wie denn die Datenquelle "src"-Attribut lautet. Angenommen, das src-Attribut sei das erste hinter der Abkürzung IMG (k=0). Hier gehen Firefox und I.E.6 verschiedene Wege.
  • Firefox: var kindref = document .getElementsByTagName('a')[j] .firstChild .attributes[k].nodeValue;
  • Internet Explorer: var kindref = document .getElementsByTagName('a')[j] .firstChild .getAttribute('href');
Beide Male ergäbe sich z.B. kindref="http://...mein Pfad../Bild.Gif". Ich will es immer noch nicht glauben, dass das Attribut "src" mit "href" abgefragt werden kann (siehe auch: Beitrag v.22.2.2008) (dp) (1,5h)

Nachtrag am 24.2.2008 um 12.40Uhr:
Endlich wieder frei Atmen können, weil die Ursache für eine fehlerhafte Programm-Ausführung entdeckt worden ist. Der Javascriptcode war nicht fehlerhaft. Ursache war, dass sich zwischen einem a-Tag an 227.Stelle im Sütterlintext und dem ersten img-Tag ein [CR][LF]-Zeichen, also ein Zeilenumbruch befand. Dieser Kindknoten des Elternknoten "A-Tag" ist als Zeichen natürlich ein #text-Element und kein IMG-Tag und daher kann diesem Textelement auch kein "border-Attribut" zugewiesen oder entfernt werden. (dp) (0,15h)

Anm.: wegen der langen Bezeichnungen sind nur hier im Weblogbeitrag Leerstellen zwecks Zeilenumbuch eingefügt worden (siehe z.B. de.selfhtml.org)
archiviert (tbid1965.374): (dp) 16.06.2009 (+0,1h (+flagcounter +home.icon +w3c_LiCh))
Haftungsausschluss
free counters
© drpagel.de Alle Rechte vorbehalten.