Besuchter Link zu einem Anker soll Farbe wechseln
Leela
- html
Hi Leute,
kann mir jemand bei folgendem Problem helfen: Wenn ich innerhalb eines Dokumentes verschiedene Anker setzte und diese mit vlink als besucht kennzeichnen will, passiert es, das er auch die nichtbesuchten Links als besucht kennzeichnet, sobald ich einen der Links besucht habe. Ich möchte aber, dass nur die schon besuchten Links zu den verschiedenen Ankern auf der Seite anders farbig gekennzeichnet werden.
Gibt es eine Möglichkeit, dies zu realisieren?
Viele Grüße Leela
Hallo Leela,
kann mir jemand bei folgendem Problem helfen: Wenn ich innerhalb eines Dokumentes verschiedene Anker setzte und diese mit vlink als besucht kennzeichnen will, passiert es, das er auch die nichtbesuchten Links als besucht kennzeichnet, sobald ich einen der Links besucht habe. Ich möchte aber, dass nur die schon besuchten Links zu den verschiedenen Ankern auf der Seite anders farbig gekennzeichnet werden.
sowohl mit Opera als auch mit Mozilla kann ich diese Problematik
nicht nachvollziehen, offenbar ist der von Dir verwendete Browser
nicht in der Lage, sauber seine History zu verwalten.
Eine Möglichkeit, diesen Fehler zu umgehen, gibt es vermutlich nicht.
Viele Grüße,
Stefan
Hallo,
sicher, Stefan? Ich hatte das Problem jetzt vermutlich etwas anders verstanden: Ein Anker auf - was weiß ich - "navi". Wenn jetzt zwei Links auf ...#navi gesetzt werden, dann dürfte der Effekt auch bei Dir auftreten (oder verwaltet der Browser wirklich jeden Link getrennt?).
Aber nun zur Lösung: Vielleicht klappt es, wenn Du die zustände der Links jeweils getrennt per CSS definierst.
Grüße aus Würzburg
Julian
Hallo Julian,
erst mal danke für deine Antwort.
Es ist tatsächlich so gemeint, dass verschiedene Links zu verschiedenen Stellen im Dokument gesetzt werden, aber der Internetexplorer erkennt das tatsächlich nicht - es ist Zumausderhautfahren.
Aber dein Tipp mit CSS klingt gut, nur leider habe ich da zu wenig Ahnung. Kannst du mir noch nen weiteren Tipp geben, wie du Zustände per CSS definieren würdest !
Ich sage schon mal frech Danke im Voraus. Danke Leela
Aber dein Tipp mit CSS klingt gut, nur leider habe ich da zu wenig Ahnung. Kannst du mir noch nen weiteren Tipp geben, wie du Zustände per CSS definieren würdest !
ganz so einfach isses nich, wie Stefan Einspender schon begründet hat. hab mir mal die mühe gemacht, trotzdem was zu basteln. funktioniert aber so, dass bei jedem neuaufruf der seite alle links als NICHT besucht und dann einzeln ge-vlinkt-t werden (also im grunde reziprokes missverhalten):
__________________________
//+++ im dateikopf:
<style type="text/css">
<!--
p { color:blue; }
a,a.visited { color:red; text-decoration:underline; }
a.js1,a.js1:visted { color:blue; text-decoration:none; }
-->
</style>
<script src="default.js" type="text/javascript">
</script>
<script language="JavaScript">
<!--
function blue(xy)
{
document.getElementsByTagName("a")[xy].className = "js1";
}
//-->
</script>
//+++ im text:
<a name="top"></a>
<a href="#anker1" onClick="blue(1)">
<a href="#anker1" onClick="blue(2)">
//+++ usw.
__________________________
um es krasser zu machen, sind besuchte links und normal-text blau, "nicht besuchte" links rot.
der weg über die ID hat den vorteil, dass du links von diesem verhalten ausklammerbn kannst, bzw. würde ein im beispiel gesetzter top-anker fehler verursachen.
das beispiel funktioniert für MSIE 5.x und NN 6.x, für ältere browser müssteste getElementsByTagName mit document.all oder layer anpassen.
Ich sage schon mal frech Danke im Voraus. Danke Leela
es war mir ein vergnügen. werdsch bei mir einbasteln.
willie
function blue(xy)
{
document.getElementsByTagName("a")[xy].className = "js1";
}
ich bin heute etwas konfus! (mehr schlafen!)
erstze die funktion durch:
function blue(xy)
{
if(document.all) document.all.tags("a")[xy].className = "js1";
}
FÜR ANDERE BROWSER IST DAS JA UNNÖTIG! und so funxt es dann ab MSIE4...
grüße!
willie
Hallo Willie,
danke für deine geniale Idee. Er hat tatsächlich die Farben so gemacht, wie ich wollte!!
Aber darf ich dich noch um ein weiteres Vergnügen bitten ?? Irgendetwas habe ich sicher falsch gemacht, die anderen Links (welche keine Anker sind) funktionieren jetzt nicht mehr und der Ankerpunkt selbst wird als Link angezeigt.
Muss ich noch irgendetwas beachten *verzweifelt guck*, vielleicht hast du per Ferndiagnose einen Tipp ? (Oder soll ich den Quellcode mitschicken?)
Erst mal Tschüss und danke Leela
danke für deine geniale Idee. Er hat tatsächlich die Farben so gemacht, wie ich wollte!!
yepp!
die anderen Links (welche keine Anker sind) funktionieren jetzt nicht mehr
ich bin nicht mehr am eigenen PC und kann nur fabulieren (mit MSIE5.5/6.0 funxts): versionsunterschiede - dein browser machts halt anders. das JavaScript wird zuerst ausgeführt und evrhindert das laden des href="".
[1] versuch mal statt onClick="" onMouseDown="" einzusetzen, wenn das nicht reicht
[2] onClick="blue(#)" ersetzen durch onMouseDown="self.location.href('referenzierte_datei.html');blue(#)" - dieser etwas unsaubere weg müsste gehen.
der Ankerpunkt selbst wird als Link angezeigt
(das hat mich zu meiner annahme oben geführt) dieses verhalten kenn ich nur zu gut...
[3] mach den <a name="anker></a> einfach leer und direkt vor den punkt, an den du springen möchtest. unschön, aber erlaubt.
[4] um den anderen browsern die speziellen CSS zu ersparen, würde ich sie nur für den MSIE reinschreiben. du müsstest dort praktisch deine "normalen" einträge umkehren. im header dann so:
<style type="text/css">
<!--
td { vertical-align:top; }
.mid { vertical-align:middle; text-align:center; }
th { color:#FFD700; background-color:darkslategray; }
.r { text-align:right; }
#map { cursor:help; }
p { color:blue; }
a { color:red; text-decoration:underline; }
a:visited { color:blue; text-decoration:none; }
-->
</style>
<script type="text/javascript">
<!--
function blue(xy)
{
if(document.all) document.all.tags("a")[xy].className = "js1";
}
if(document.all) document.write('<style type="text/css">a,a:visited { color:red; text-decoration:underline; } a.js1:visited { color:blue; text-decoration:none; }</style>');
//-->
</script>
Erst mal Tschüss und danke Leela
hat die Leela was mit Bender zu tun?
willie
td { vertical-align:top; }
.mid { vertical-align:middle; text-align:center; }
th { color:#FFD700; background-color:darkslategray; }
.r { text-align:right; }
#map { cursor:help; }
das hatte in der nachricht eigentlich nichts zu suchen.
willie
Hi Willie,
erst mal danke. Hab's aber noch nicht getestet. Übrigens Leela hat mit Bender zu tun ;-) Tschüss Leela
Hi Willie,
So, habe deinen Ratschlag; a name leer zu machen berücksichtigt. Das klappt jetzt also. Jetzt habe ich noch mal geguckt, warum die blöden anderen Links nicht funtionierten. Ich hatte gar nicht mehr daran gedacht, dass ich das schon Javascript drin hatte, leider habe ich kaum Ahnung von Javascript (muss ich zu meiner Schande gestehen *beschämt dreinschau*) und weiß nicht, wie ich nun zwei Funktinen unter einen Hut bringen soll.
Ich habe folgenden Befehl stehen: <a href="JavaScript:Fenster7('text5.htm')"
Nun öffnet sich die Datei im eigenen Fenster, macht sie auch wirklich prima *stolz guck* a b e r wo muss ich dem jetzt verklickern, dass er nun den besuchten Link in besagter Farbe darstellt? Ich habe die Funtion blue versucht wie bei den Ankern dahinter zu schreiben, dass will er aber nicht lesen.
Würde mich sehr freuen, wenn du dich meines Problemes noch mal annehmen könntest!!! (Sonst frage ich Frey *kicher*)
Tschüssi Leela
Ich habe folgenden Befehl stehen: <a href="JavaScript:Fenster7('text5.htm')" [...] Ich habe die Funtion blue versucht wie bei den Ankern dahinter zu schreiben, dass will er aber nicht lesen.
bevor ich nochmal loslege, ne frage: haste so versucht (bin grad wieder an nem anderen comp)?
<a href="JavaScript:Fenster7('text5.htm');blue(#)">
(Sonst frage ich Frey *kicher*)
Frey issja sowieso älter & weiser ;-)
willie
Hi Willi,
danke erst mal, hatte es schon hingekriegt (Erfolgsmeldung dazu ist hier im Newsletter an der falschen Stelle erschienen (steht oben), so wie du schriebst hat es auch geklappt und funktioniert prima -bin total happy und kann mich an die nächsten Befehle wagen.
Noch mal vielen Dank für deine Hilfe.
(Und stimmt: Frey ist tatsächlich schlauer ;-) zumindestens war er es in der letzten Folge *grins*)
Also Tschüss bis zum nächsten Hilferuf!!!
Leela
Und danke auch an allen anderen, die sich einen Kopp gemacht haben !!
Hallo Julian,
sicher, Stefan? Ich hatte das Problem jetzt vermutlich etwas anders verstanden: Ein Anker auf - was weiß ich - "navi". Wenn jetzt zwei Links auf ...#navi gesetzt werden, dann dürfte der Effekt auch bei Dir auftreten (oder verwaltet der Browser wirklich jeden Link getrennt?).
nein, diese Aussage ist, bitte entschuldige mir den Ausdruck, Unfug.
Wenn ich http://domain.xy schonmal besucht habe, dann wird ein Link
auf eben dieses Ziel auf jeder Seite egal auf welcher Website immer
als besucht angezeigt. Und ganz genauso verhält es sich, wenn ein
Link auf seite.html#anker oder nur #anker verweist. Entweder ich habe
diesen Anker schonmal besucht oder nicht, im ersten Fall wird jeder
Link mit dem Ziel #anker als visited dargestellt.
Ich vermute mal, dass Dir diese Tatsache bewußt ist und Du nur einen
kurzen Blackout hattest ;-)
Aber nun zur Lösung: Vielleicht klappt es, wenn Du die zustände der Links jeweils getrennt per CSS definierst.
Nein, ist auf _keinen_ Fall möglich, entweder das Ziel eines Links
ist vom Browser als "da war ich schonmal" vorgemerkt oder es ist für
den Browser unbekannt. Dummerweise ist z.Bsp. eben der MSIE nicht in
der Lage, solche Sachen in Zusammenhang mit den Ankern auf einer
Seite zu merken. Spätestens nach dem Reload einer Seite, die Anker
enthält, sieht er alle Links mit diesen Ankern als Ziel als schon-
mal besucht an. Ich denke, dieses Verhalten ist falsch und, was
viel wichtiger ist, es ist benutzerunfreundlich.
Viele Grüße,
Stefan
http://http://www.google.de/images/hp0.gif
<img src="http://www.google.de/images/hp0.gif" border=0 alt="">
<iframe src="http://www.google.de" width="90%" height="90%">http://www.google.de</iframe>
Huuuuuuurrra, es hat geklappt!!!
Jetzt hab ich solnge gebastelt, bis es ging!!! Funktioniert prima!!
Danke an Willie und alle, die sich nen Kopp gemacht haben.
Tschüss bis zum nächsten Problem ;-)))
Leela
hallo,
Jetzt hab ich solnge gebastelt, bis es ging!!! Funktioniert prima!!
kann ich noch die info haben, was das problem mit den externen links war?
danke!
willie
Hi Leela,
warum kompliziert, wenns auch einfach geht?
Speicher den nachfolgenden Quellcode als test.html ab. Voilá.
Viele Grüsse,
Thorsten
<html>
<head>
<title>Test</title>
<script>
var temp = location.search;
if(temp) { window.location.href = "test.html#" + temp.substring(1,temp.length); }
</script>
</head>
<body>
<a href="test.html?test1">Test 1</a><br>
<a href="test.html?test2">Test 2</a><br>
<a href="test.html?test3">Test 3</a><br>
<a name="test1"></a>Test 1
<a name="test2"></a>Test 2
<a name="test3"></a>Test 3
</body>
</html>
MEGACOOL!
sowas kann ich aus http://selfhtml.teamone.de/selfhtml/javascript/objekte/location.htm#search nicht erkennen... meine hochachtung!
willie
MEGACOOL!
muss mich n bissel zurücknehmen: klappt zwar in allen mir zur verfügung stehenden browsern, hebelt aber die zürück-funktion derselben aus.
(ich bin hier auf ner 5buttonmouse unterwegs, und ich glaub, ich brauch sowas.)
trotzdem knasse!
willie