DOM: Probleme bei "pathname" und "href"
Klaus
- dhtml
0 Cheatah0 Axel Richter
Hallo,
ich soll eine Javascript Function schreiben, die aus übergebenen HTML Dateien mit jeweils einem Link das Verweisziel des Links ausliest. Die ausgegebenen Links gebe ich an eine dritte Funktion weiter, auf die ich keinen Einfluss habe.
Hört sich einfach an, die Tücke steckt leider im Detail.
Links in dieser Art bekomme ich
1. <a href="http://www.yahoo.de>Korrekter Link zu Yahoo</a>
2. <a href="www.yahoo.de>Unvollständiger Link zu Yahoo</a>
3. <a href="./subfolder/file1.html>relativer Link</a>
Auf einen übergebenen Link verweise ich mit dem Objekt "currentlink".
1. macht kein Problem und würde mit "currentlink.href" folgendes zurückliefern: http://www.yahoo.de.
2. macht Probleme. "currentlink.href" liefert hier (z.B. auf Test-localhost): http://localhost/htmlfiles/www.yahoo.de , wobei "htmlfiles" das Verzeichnis ist, in dem die Datei mit dem Link liegt. Mit diesem Link kollabiert natürlich die Funktion, die nach mir kommt.
3. macht auch Probleme, das kann ich aber mit "currentlink.pathname" umgehen. Ergebnis: "subfolder/file1.html".
Was mache ich aber mit den unvollständigen Links (2.)? Natürlich kann man http: vor das www schreiben, aber wie verhindere ich generell, dass etwas wie http://localhost.. mit zurückgeliefert wird.
Ich möchte einfach nur das, was im Link unter href=".." geschriben wurde, egal ob reine Lehre oder nicht? Geht das ohne eine irrsinnige Fallunterscheidung? Habt ihr eine Idee?
Dank & Gruss
Klaus
Hi,
Was mache ich aber mit den unvollständigen Links (2.)? Natürlich kann man http: vor das www schreiben, aber wie verhindere ich generell, dass etwas wie http://localhost.. mit zurückgeliefert wird.
Ich möchte einfach nur das, was im Link unter href=".." geschriben wurde, egal ob reine Lehre oder nicht? Geht das ohne eine irrsinnige Fallunterscheidung? Habt ihr eine Idee?
da Du schon von DOM redest: Warum verwendest Du nicht die getAttribute()-Methode? Natürlich hast Du weiterhin eine Fallunterscheidung, nämlich zwischen den einzelnen Objektmodellen.
Cheatah
Warum verwendest Du nicht die getAttribute()-Methode?
Weil MSIE und Opera nicht den wirklichen Attributwert zurückgeben, sondern einen absoluten Link daraus basteln.
Hi,
Warum verwendest Du nicht die getAttribute()-Methode?
Weil MSIE und Opera nicht den wirklichen Attributwert zurückgeben, sondern einen absoluten Link daraus basteln.
<title>HREF</title>
<a href="test.htm">Link</a>
<pre><script>
document.writeln(document.getElementsByTagName("a")[0].getAttribute("href"));
document.writeln(document.links[0].href);
document.writeln(document.links[0].attributes["href"]);
</script></pre>
Ergibt auf dem IE:
http://www.example.com/test.htm
http://www.example.com/test.htm
test.htm
Und auf Opera?
Gruß, Cybaer
Hallo,
Ergibt auf dem IE:
http://www.example.com/test.htm
http://www.example.com/test.htm
test.htm
Zur dritten Ausgabe:
Im IE 5.5 erscheint test.htm, aber im IE 6.0 [object].
Und auf Opera?
Opera 7.54 gibt [object Attr] aus. Die beiden ersten Zeilen unterscheiden sich bei den IEs und Opera nicht.
Firefox 1.0 bringt:
test.htm
http://www.example.com/test.htm
[object Attr]
MfG, Thomas
Hallo,
- <a href="www.yahoo.de">Unvollständiger Link zu Yahoo</a>
- macht Probleme. "currentlink.href" liefert hier (z.B. auf Test-localhost): http://localhost/htmlfiles/www.yahoo.de , wobei "htmlfiles" das Verzeichnis ist, in dem die Datei mit dem Link liegt.
Ja und genau das wird der Browser auch anfordern, wenn man auf den Link klickt. Er führt also nicht zu http://www.yahoo.de, sondern zu ./www.yahoo.de. Das ist kein unvollständiger Link, sonden einfach ein falscher Link, wenn er zu http://www.yahoo.de führen soll.
viele Grüße
Axel