Leela: Besuchter Link zu einem Anker soll Farbe wechseln

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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

          2. 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

            1. 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

              1. 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.

                • warum mach ich immer doppelt einträge? identitätsdifferenzen?

                willie

                1. Hi Willie,

                  erst mal danke. Hab's aber noch nicht getestet. Übrigens Leela hat mit Bender zu tun ;-) Tschüss Leela

                  1. 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

                    1. 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

                      1. 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 !!

      2. 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

      3. 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>

  2. 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

    1. 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

  3. 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>

    1. MEGACOOL!

      sowas kann ich aus http://selfhtml.teamone.de/selfhtml/javascript/objekte/location.htm#search nicht erkennen... meine hochachtung!

      willie

      1. 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