Guido: Seite öffnen und Anchor anspringen per JS

Moin,

ich breche mir gerade die Finger dabei meine Navigationsleiste zu dynamisieren. Folgende Situation:

Ich habe in Frame 1 eine Liste mit Links, die alle auf Anchors in einem Dokument verweisen sollen, das in Frame 2 geladen wurde. So weit kein Problem. In Frame 2 können aber n-verschiedene Dokumente geladen werden, die alle identische Anchors beinhalten. Ich möchte also die Links so dynamisieren, dass er mir immer im momentan geladenen Dokument in Frame 2 an den jeweiligen Achor springt, egal welches Dokument geladen wurde.

Meine Ideen gingen bisher in diese Richtung:

parent.textframe.location.href = parent.textframe.document.URL + "#Unterlagen"

Das Ergebnis ist natürlich gleich 0, sonst würde ich hier nicht posten. Habe das Gefühl, dass ich zu kompliziert denke, finde aber nicht den richtigen Dreh.

Für Hilfe wäre ich echt dankbar.

  1. Hallo Guido.

    Ich habe in Frame 1 eine Liste mit Links, die alle auf Anchors in einem Dokument verweisen sollen, das in Frame 2 geladen wurde. So weit kein Problem. In Frame 2 können aber n-verschiedene Dokumente geladen werden, die alle identische Anchors beinhalten. Ich möchte also die Links so dynamisieren, dass er mir immer im momentan geladenen Dokument in Frame 2 an den jeweiligen Achor springt, egal welches Dokument geladen wurde.

    Warum verlinkst du nicht einfach ohne Dokumentname? Also z.B. so:
    <a href="#anker1" target="hauptframe">Link</a>

    Wenn es umbedingt mit Dokumentname sein muss ginge das so:
    parent.textframe.location.href = parent.textframe.location.href + "#Unterlagen"

    Man liest sich, H2O

    --
    Dodwin | Download Opera
    [ie:% fl:( br:< va:) ls:[ fo:| rl:( n4:( ss:) de:> js:| ch:? sh:( mo:| zu:}](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%25%20fl%3A(%20br%3A%3C%20va%3A)%20ls%3A%5B%20fo%3A%7C%20rl%3A(%20n4%3A(%20ss%3A)%20de%3A%3E%20js%3A%7C%20ch%3A%3F%20sh%3A(%20mo%3A%7C%20zu%3A%7D)
    1. Hallo Guido.

      Ich habe in Frame 1 eine Liste mit Links, die alle auf Anchors in einem Dokument verweisen sollen, das in Frame 2 geladen wurde. So weit kein Problem. In Frame 2 können aber n-verschiedene Dokumente geladen werden, die alle identische Anchors beinhalten. Ich möchte also die Links so dynamisieren, dass er mir immer im momentan geladenen Dokument in Frame 2 an den jeweiligen Achor springt, egal welches Dokument geladen wurde.

      Warum verlinkst du nicht einfach ohne Dokumentname? Also z.B. so:
      <a href="#anker1" target="hauptframe">Link</a>

      Wenn es umbedingt mit Dokumentname sein muss ginge das so:
      parent.textframe.location.href = parent.textframe.location.href + "#Unterlagen"

      Man liest sich, H2O

      Moin,

      das hatte ich schon versucht. Bei Version 1 lädt er dann eine Blanko-Seite auf der nur #Unterlagen steht. Und bei Variante 2 springt er mir im textframe an die richtige Stellen, ersetzt mir aber den Navigationsframe durch eine leere Seite, auf der dann das Ergebnis von parent.textframe.location.href + '#Unterlagen'" steht, also der komplette Dateipfad + Anchor. Und ich versteh nicht wieso, da ich immer explizit den textframe angesprochen habe. Kann ich per JS einen Anchor direkt anspringen?

      1. hi,

        Kann ich per JS einen Anchor direkt anspringen?

        location.hash

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          Kann ich per JS einen Anchor direkt anspringen?

          location.hash

          gruß,
          wahsaga

          Vielleicht war ich etwas mißverständlich: Ich möchte nicht den Namen des Anchors ausgeben. Ich möchte ihn innerhalb des Dokuments anspringen. Ich bin aber gerade ein Stück weiter gekommen. Ich habe anstatt im <a>-Tag das ganze mal in einem onClick-Event des <p>-Tags gemacht und schon gehts. Jetzt ist nur der Cursor beim klicken kein Pfeil mehr sondern eine Einfügemarke. Das kann doch nicht der Weisheit letzter Schluß sein.

          1. Hi!

            Vielleicht war ich etwas mißverständlich: Ich möchte nicht den Namen des Anchors ausgeben. Ich möchte ihn innerhalb des Dokuments anspringen.

            und was gefällt dir an location.hash nicht? Hast du dir wirklich angeschaut, was diese Funktion macht?

            Jetzt ist nur der Cursor beim klicken kein Pfeil mehr sondern eine Einfügemarke.

            SelfHTML-Suche: CSS, cursor

            Gruß, rob

            1. Hi!

              Vielleicht war ich etwas mißverständlich: Ich möchte nicht den Namen des Anchors ausgeben. Ich möchte ihn innerhalb des Dokuments anspringen.
              und was gefällt dir an location.hash nicht? Hast du dir wirklich angeschaut, was diese Funktion macht?

              Jetzt ist nur der Cursor beim klicken kein Pfeil mehr sondern eine Einfügemarke.
              SelfHTML-Suche: CSS, cursor

              Gruß, rob

              Also gemäß der Beschreibung speichert location.hash den Ankernamen. Da dieser aber nicht variabel ist und von mir eh fix vorgegeben wird sehe ich darin nicht so den Sinn für meine Lösung. Oder kann ich über location.hash diesen Anker auch anspringen oder besser: adressieren? Wenn ja stand davon nichts im Text.

              Gruß,

              Guido

              1. Hallo Guido

                Also gemäß der Beschreibung speichert location.hash den Ankernamen. ... Oder kann ich über location.hash diesen Anker auch anspringen oder besser: adressieren? Wenn ja stand davon nichts im Text.

                Hast du den Text gelesen?
                Dort steht: "Wenn Sie diese Angabe ändern, bewirken Sie einen Verweis innerhalb der Datei zu dem angegebenen Anker."

                Auf Wiederlesen
                Detlef

                --
                - Wissen ist gut
                - Können ist besser
                - aber das Beste und Interessanteste ist der Weg dahin!
            2. Hi!

              Vielleicht war ich etwas mißverständlich: Ich möchte nicht den Namen des Anchors ausgeben. Ich möchte ihn innerhalb des Dokuments anspringen.
              und was gefällt dir an location.hash nicht? Hast du dir wirklich angeschaut, was diese Funktion macht?

              Jetzt ist nur der Cursor beim klicken kein Pfeil mehr sondern eine Einfügemarke.
              SelfHTML-Suche: CSS, cursor

              Gruß, rob

              "Wenn Sie diese Angabe ändern, bewirken Sie einen Verweis innerhalb der Datei zu dem angegebenen Anker. Auch dabei müssen Sie das Gatterzeichen vor dem Ankernamen hinzufügen."

              Meinst Du das? Wenn ich parent.textframe.location.hash = "#Unterlagen" zuweise passiert nix. Ich änder doch nur den Inhalt der hash-Eigenschaft.

              Gruß,

              Guido

              1. hi,

                "Wenn Sie diese Angabe ändern, bewirken Sie einen Verweis innerhalb der Datei zu dem angegebenen Anker. Auch dabei müssen Sie das Gatterzeichen vor dem Ankernamen hinzufügen."

                Meinst Du das? Wenn ich parent.textframe.location.hash = "#Unterlagen" zuweise passiert nix.

                Dann machst du wohl noch irgendetwas falsch.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. hi,

                  "Wenn Sie diese Angabe ändern, bewirken Sie einen Verweis innerhalb der Datei zu dem angegebenen Anker. Auch dabei müssen Sie das Gatterzeichen vor dem Ankernamen hinzufügen."

                  Meinst Du das? Wenn ich parent.textframe.location.hash = "#Unterlagen" zuweise passiert nix.

                  Dann machst du wohl noch irgendetwas falsch.

                  gruß,
                  wahsaga

                  ARGHHHH!!!!

                  Mea Culpa! Man sollte nicht gleichzeitig mit seinem Chef telefonieren und Code hacken. Ich habe vergessen den Script-Tag zu schließen, dann kann auch nichts passieren. Kaum ist der Tag zu springt er von Anker zu Anker, dass es eine wahre Freude ist.

                  Sorry, habe in der Tat noch einen Fehler drinnen gehabt. Nu isser wech und es schnurrt. Jetzt mach ich Feierabend. Genug für heute. Nochmal tausend Dank an die drei Helfer.

                  Gruß,

                  Guido

          2. hi,

            Kann ich per JS einen Anchor direkt anspringen?

            location.hash

            gruß,
            wahsaga

            Vielleicht war ich etwas mißverständlich: Ich möchte nicht den Namen des Anchors ausgeben. Ich möchte ihn innerhalb des Dokuments anspringen. Ich bin aber gerade ein Stück weiter gekommen. Ich habe anstatt im <a>-Tag das ganze mal in einem onClick-Event des <p>-Tags gemacht und schon gehts. Jetzt ist nur der Cursor beim klicken kein Pfeil mehr sondern eine Einfügemarke. Das kann doch nicht der Weisheit letzter Schluß sein.

            So, ist nur ein Workaround, macht aber das, was ich will:

            <a href="javascript:;" onClick="javascript:parent.textframe.location.href = parent.textframe.location.href + '#Unterlagen'">Verfügbare Unterlagen</a>

            Er verlinkt zum Anker und ich habe einen Zeiger über dem Link. Problem gelöst. Ist zwar nicht der Weg, den ich angedacht hatte, aber was solls. Danke für eure Denkanstöße.

            Gruß,

            Guido

          3. hi,

            Ich habe anstatt im <a>-Tag das ganze mal in einem onClick-Event des <p>-Tags gemacht und schon gehts.

            Ja, das ist ja auch der bessere Weg, JS-Aufrufe einzubinden.
            Wozu einen Link einfügen, wenn der gar keine verlinkende Aufgabe hat? Das wäre in der Tat Blödsinn.

            Jetzt ist nur der Cursor beim klicken kein Pfeil mehr sondern eine Einfügemarke. Das kann doch nicht der Weisheit letzter Schluß sein.

            Wenn deine Weisheit so schnell am Schluß ist, dann erweitere sie doch mal ein wenig: CSS kennt eine Eigenschaft cursor.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hallo,

        das hatte ich schon versucht. Bei Version 1 lädt er dann eine Blanko-Seite auf der nur #Unterlagen steht. Und bei Variante 2 springt er mir im textframe an die richtige Stellen, ersetzt mir aber den Navigationsframe durch eine leere Seite......

        Wieso lese ich die ganze Zeit raus, das er eigentlich nur mit target das korrekte Frame ansprechen muss; statt einen "Umweg" über JavaScript zu gehen? Habe ich irgendwas überlesen?

        Mit freundlichem Gruß
        Micha

  2. hi,

    parent.textframe.location.href = parent.textframe.document.URL + "#Unterlagen"

    Das Ergebnis ist natürlich gleich 0,

    Hast du dir denn mal angeschaut, was document.URL enthält, wenn im textframe bereits ein Anker angesprungen wurde ...?

    sonst würde ich hier nicht posten.

    Wer selbst bebuggt, braucht übrigens auch nicht so oft nachfragen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Wer selbst bebuggt, braucht übrigens auch nicht so oft nachfragen.

      Genau, und deshalb beschäftige ich mich auch schon seit zwei Stunden mit dem Thema und komme nicht weiter. Aber vielleicht habe ich ja auch den Sinn dieses Forums nicht verstanden.

      Übrigens steht in URL der gesamte Pfad der anzuspringenden Datei. Hab ich beim bebuggen rausgefunden. ;-)