Konni: Sprungmarke funktioniert im FF nur bedingt

Hallo Forum,

ich habe eine Sprungmarke ala localhost/myscript.php?param=1#Sprung, welche im FF-Browser 81.0.1 n ur dann funktioniert, wenn ich ohnehin schon auf der Seite myscript.php bin, aber nicht wenn ich von einer anderen Seite auf myscript.php inkl. Anker geleitet wurde.

Im Chrome-Broweser funktioniert es aber in beiden Fällen.

Gibt es einen Grund für das FF-Verhalten? und noch wichtiger: gibt es eine Lösung für dieses roblem?

Konni

  1. Hallo,

    ich habe eine Sprungmarke ala localhost/myscript.php?param=1#Sprung, welche im FF-Browser 81.0.1 n ur dann funktioniert, wenn ich ohnehin schon auf der Seite myscript.php bin, aber nicht wenn ich von einer anderen Seite auf myscript.php inkl. Anker geleitet wurde.

    das ist nicht das übliche Verhalten, und das kann ich an beliebigen anderen Beispielen auch nicht nachvollziehen. Beispielsweise scrollt Firefox beim Aufruf eines Foren-Beitrags sofort zur gewünschten Stelle, weil das Sprungziel #m1776123 bereits Teil des Links ist.

    Wenn das bei dir nicht funktioniert, muss das noch einen anderen Grund haben, den es zu finden gilt.

    Im Chrome-Broweser funktioniert es aber in beiden Fällen.

    Gibt es einen Grund für das FF-Verhalten? und noch wichtiger: gibt es eine Lösung für dieses roblem?

    Gibt es ein Beispiel, an dem man das von dir beschriebene Verhalten mal beobachten kann?

    Live long and pros healthy,
     Martin

    --
    Paradox: Wieso heißen die Dinger Kühlkörper, obwohl sie höllisch heiß werden?
    1. Hallo Martin,

      Gibt es ein Beispiel, an dem man das von dir beschriebene Verhalten mal beobachten kann?

      Leider nicht, weil eine rein interne Anwendung 😟

      Früher hat das übrigens im FF auch funktioniert, das Verhalten hat sich mit einem der letzten 2-3 Updates verändert.

      Konni

      1. Hallo Ich kann mich an keinen konkreten Fall erinnern, wo ich sowas schon mal gemacht habe. Deshalb bin ich nicht ganz sicher, ob ich sowas überhaupt schon gemacht habe. Ich bin aber sicher, dass ich noch nie Probleme mit sowas hatte und ich wäre ohne deine Frage nicht auf die Idee gekommen, es so zu machen, wie du es gemacht hast. Der Anker ist doch Teil der URL und die URL-Parameter werden angehängt. Ich hätte also nicht localhost/myscript.php?param=1#Sprung sondern localhost/myscript.php#Sprung?param=1 benutzt.

        1. Hallo Friedel,

          Ich hätte also nicht localhost/myscript.php?param=1#Sprung sondern localhost/myscript.php#Sprung?param=1 benutzt[,]

          was leider falsch ist.

          Bis demnächst
          Matthias

          --
          Du kannst das Projekt SELFHTML unterstützen,
          indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
          1. Hallo Matthias,

            was leider falsch ist.

            Ich widerspreche ein wenig. Ich widermurmele sozusagen.

            localhost/myscript.php#Sprung?param=1 ist gemäß der von Dir zitierten Quelle eine gültige URL. Alle verwendeten Zeichen des Fragments sind in der uric Zeichenklasse enthalten.

            Richtig ist, dass die Platzierung des Hashmark eine wesentliche Rolle spielt und diese URL eine andere Wirkung hat als Friedel sich mutmaßlich vorstellt.

            Ein GET Request auf localhost/myscript.php#Sprung?param=1 sendet den HTTP Befehl GET /myscript.php an den Server, d.h. der Server bekommt param=1 nicht zu sehen. Der Browser sucht dann im erhaltenen Dokument nach einem Element mit id='Sprung?param=1'. Weird, but valid.

            Ein GET Request auf localhost/myscript.php?param=1#Sprung sendet den HTTP Befehl GET /myscript.php?param=1 an den Server, und sucht im erhaltenen Dokument nach einem Element mit id='Sprung'.

            Rolf

            --
            sumpsi - posui - obstruxi
            1. Hallo

              was leider falsch ist.

              Ich widerspreche ein wenig. Ich widermurmele sozusagen.

              😆

              localhost/myscript.php#Sprung?param=1 ist gemäß der von Dir zitierten Quelle eine gültige URL.

              Das hülft natürlich nichts, denn, wie du danach detailliert beschreibst, funktioniert es nicht, wie erwaret. Es ist also nicht falsch, aber faktisch kaputt.

              Wenn ich die Aussagen von Konni richtig interpretiere, wird die URL schon auf dem Server (mit PHP?) ins Dokument gebracht und das Zielfragment steht, wenn ich der Beschreibung im Eröffnungsposting folge, (zuverlässig?) an deren Ende.

              Es wäre schön, wenn Konni das (gerade den zweiten Punkt) noch einmal klarstellen könnte.

              Tschö, Auge

              --
              Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
              Hohle Köpfe von Terry Pratchett
              1. Hi Auge,

                Wenn ich die Aussagen von Konni richtig interpretiere, wird die URL schon auf dem Server (mit PHP?) ins Dokument gebracht und das Zielfragment steht, wenn ich der Beschreibung im Eröffnungsposting folge, (zuverlässig?) an deren Ende.

                Es wäre schön, wenn Konni das (gerade den zweiten Punkt) noch einmal klarstellen könnte.

                Zielfragment steht hartcodiert am URL-Ende. Auf dem Server (online) springt der FF-Browser zur Marke. Dasselbe Script springt auf dem localhost nicht zur Marke (im FF), es sei denn, dass ich eh schon auf der Seite bin. Aber nicht von "script1 zu script2".

                Muss aber dennoch am Script liegen, denn ich habe gerade mal versucht, das Browserverhalten über einen isolierten Test zu reproduzieren. Gelingt nicht, dort arbeitet der FF auch lokal zuverlässig, auch scriptübergreifend.

                Konni

  2. Wird die Ziel-ID per JavaScript im HTML ergänzt?

    Wenn ja, kann es daran liegen.
    Ein solches Script, muss dann aber anschließend auch die Aufgabe übernehmen können das Fragment der URL auszulesen und die Site an die richtige Stelle zu scrollen. Evtl. ist das Script auch vollständig, aber funktioniert nicht (mehr) in allen Browsern.
    Besser wäre es, die ID schon auf Serverseite ins HTML aufzunehmen. Dann nämlich kann der Browser unbeirrt seine Aufgabe erledigen.

    1. Besser wäre es, die ID schon auf Serverseite ins HTML aufzunehmen. Dann nämlich kann der Browser unbeirrt seine Aufgabe erledigen.

      Genau so wirds gemnacht.

      Es wird aber immer kurioser, denn ich habe das Script mal online geladen. Und online funktioert alles... nur lokal läuft es nicht im FF.

      Konni

      1. Hallo Konni,

        ich habe jetzt auf localhost 2 PHP Scripte bereitgestellt, die nichts weiter tun als 8 große DIVs untereinander zu setzen und eine Navigation rechts daneben zu kleben. Die Navi kan von beiden Scripten alle 8 DIVs anspringen.

        Funktioniert problemfrei in Fuchs (81.0.1) und Chrome. Wenn das bei Dir nicht funktioniert, ist an deinem Fuchs was schräg.

        Einstieg: http://hashlinks.borchmann.one/source1.php

        Quellen: http://hashlinks.borchmann.one/sources.zip

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hallo Rolf,

          Funktioniert problemfrei in Fuchs (81.0.1) und Chrome. Wenn das bei Dir nicht funktioniert, ist an deinem Fuchs was schräg.

          danke für Deine Mühe... funktioniert tadellos. Aber selbst mein eigenes Script funktioniert online tadellos, nur im localhost nicht 😕

          1. mein eigenes Script funktioniert online tadellos

            Hast Du uns einen Link dahin?

            1. Hallo,

              mein eigenes Script funktioniert online tadellos

              Hast Du uns einen Link dahin?

              das ist normalerweise auch eine meiner ersten Fragen. Aber Konni hat ja nun schon mehrmals erwähnt, dass sein Problem nicht auftritt, wenn er die betroffene Seite im Web hat.

              Ein Online-Beispiel, bei dem das Problem nicht auftritt, ist daher nicht sehr hilfreich.

              Live long and pros healthy,
               Martin

              --
              Paradox: Wieso heißen die Dinger Kühlkörper, obwohl sie höllisch heiß werden?
              1. Hi Martin,

                Ein Online-Beispiel, bei dem das Problem nicht auftritt, ist daher nicht sehr hilfreich.

                Schon seltsam. Rolfs Beispiel funktioniert online sowie local in meinem FF.

                Meine eigene Seite funktioniert online, aber local nicht.

                1. Hallo Konni,

                  es liegt also nicht grundsätzlich am Browser, sondern an irgendwas spezifischem, was deine Seite tut. Wenn dein Code nicht veröffentlicht werden kann, sind wir jetzt wohl raus.

                  Ich habe in den Release Notes vom Fuchs gestöbert, das solltest du auch noch mal tun. Mir ist nichts ins Auge gehüpft, aber vielleicht Dir.

                  Wenn du gar nicht weiter kommst, versuche mal, ältere Versionen des FF zu bekommen und dagegen zu testen. Um sicher zu sein, dass es an der FF Version liegt. Ob du jede einzelne Version noch bekommst, weiß ich aber nicht. Aber wenn man genau wüsste, mit welcher Version es kaputt geht, könnte man genauer in die Release Notes gucken.

                  Rolf

                  --
                  sumpsi - posui - obstruxi
                  1. Hallo Rolf und alle anderen Mitstreiter,

                    es liegt also nicht grundsätzlich am Browser, sondern an irgendwas spezifischem, was deine Seite tut. Wenn dein Code nicht veröffentlicht werden kann, sind wir jetzt wohl raus.

                    Das sehe ich ein...

                    Ich habe in den Release Notes vom Fuchs gestöbert, das solltest du auch noch mal tun. Mir ist nichts ins Auge gehüpft, aber vielleicht Dir.

                    Gute Idee.

                    Wenn du gar nicht weiter kommst, versuche mal, ältere Versionen des FF zu bekommen und dagegen zu testen. Um sicher zu sein, dass es an der FF Version liegt. Ob du jede einzelne Version noch bekommst, weiß ich aber nicht. Aber wenn man genau wüsste, mit welcher Version es kaputt geht, könnte man genauer in die Release Notes gucken.

                    Halte leider für ausgeschlosen, alle Releases zu bekommen. Ich bleibe am Ball und falls ich das Rätzel löse, werde ich es Euch wissen lassen.

                    Danke für die Mithilfe und Mühe.

                    Konni

          2. Hallo Konni,

            die Idee war, dass Du meine Scripte bei Dir lokal testest.

            Allerdings habe ich da diesen Satz von 9:45 Uhr nicht gesehen

            Muss aber dennoch am Script liegen, denn ich habe gerade mal versucht, das Browserverhalten über einen isolierten Test zu reproduzieren. Gelingt nicht, dort arbeitet der FF auch lokal zuverlässig, auch scriptübergreifend.

            Es kann eigentlich nicht am PHP liegen, denn PHP produziert nur HTML, das vom Browser interpretiert wird.

            Du schreibst auch

            kein JS Effekt

            Verwendest Du denn JS auf der Seite? Wenn ja, was tut das JS? Der einzige Unterschied zwischen localhost und server kann ja nur das Timing sein - und auch das nicht mehr wenn die Dateien im Cache liegen.

            Greifst Du per JS auf Server-Ressourcen zu (Ajax)? Ist dieser Zugriff so gebaut, dass sich das Script an den Host wendet, von dem die Seite geladen wurde? Denn wenn das nicht so ist, hast Du einmal Cross-Site Zugriffe und einmal nicht, und das kann zu Problemen führen.

            Die Frage von djr

            Wird die Ziel-ID per JavaScript im HTML ergänzt?

            hast Du nicht beantwortet. Würdest Du das bitte noch tun? Es könnte sogar mit meiner vorigen Frage zusammenhängen. Wenn der HTML Teil, der die ID enthält, per Script geladen und generiert wird, dann kann das tatsächlich zu Timing-Problemen führen, mit dem Effekt, dass der Browser nach dem Laden der Seite die im Hash-Teil genannte ID noch gar nicht findet.

            Interessant wäre auch: Gibt es bei localhost Fehlermeldungen im Konsole-Tab der Entwicklerwerkzeuge des Browsers, die es bei Ausführung vom Server nicht gibt?

            Rolf

            --
            sumpsi - posui - obstruxi
            1. Hallo Rolf,

              die Idee war, dass Du meine Scripte bei Dir lokal testest.

              Sorry, das hatte ich zu spät gesehen. Habs aber dennoch nachgeholt, läuft lokal auch tadellos.

              Verwendest Du denn JS auf der Seite? Wenn ja, was tut das JS? Der einzige Unterschied zwischen localhost und server kann ja nur das Timing sein - und auch das nicht mehr wenn die Dateien im Cache liegen.

              Ja, ich verwende massig JS und bin Deiner meinung. Ich muss mal schauen, was ich dort alles so mache.

              Greifst Du per JS auf Server-Ressourcen zu (Ajax)? Ist dieser Zugriff so gebaut, dass sich das Script an den Host wendet, von dem die Seite geladen wurde? Denn wenn das nicht so ist, hast Du einmal Cross-Site Zugriffe und einmal nicht, und das kann zu Problemen führen.

              Nein, ein Ajax-Zugriff ist dort nicht.

              Wird die Ziel-ID per JavaScript im HTML ergänzt?

              hast Du nicht beantwortet. Würdest Du das bitte noch tun?

              Nein, sowohl der Link selber als auch die dazugehörige Ziel-ID sind hartcodiert.

              Interessant wäre auch: Gibt es bei localhost Fehlermeldungen im Konsole-Tab der Entwicklerwerkzeuge des Browsers, die es bei Ausführung vom Server nicht gibt?

              Nein, in beiden Fällen wird Folgendes angezeigt:

              Diese Seite verwendet die nicht standardisierte Eigenschaft "zoom". Stattdessen sollte calc() in den entsprechenden Eigenschaftswerten oder "transform" zusammen mit "transform-origin: 0 0" verwendet werden. myscript.php
              
              Layout-Darstellung wurde erzwungen, bevor die Seite vollständig geladen war. Falls Stylesheet noch nicht geladen sind, kann dies zu einem kurzzeitigen Darstellung des Inhalts ohne Formatierung führen. jquery.min.js:2:9118
              

              Gruß, Konni

      2. Besser wäre es, die ID schon auf Serverseite ins HTML aufzunehmen. Dann nämlich kann der Browser unbeirrt seine Aufgabe erledigen.

        Genau so wirds gemnacht.

        OK, gut.

        Es wird aber immer kurioser, denn ich habe das Script mal online geladen. Und online funktioert alles... nur lokal läuft es nicht im FF.

        Nutzt die Site einen Scroll-Effekt (z.B. "smooth scrolling") basierend auf JavaScript?

        Deaktiviere mal JavaScript im Firefox und teste erneut die locale Version deiner Site.

        1. d online funktioert alles... nur lokal läuft es nicht im FF.

          Nutzt die Site einen Scroll-Effekt (z.B. "smooth scrolling") basierend auf JavaScript?

          Nein, kein JS-Effekt. 😕