Marco: ScrollTop()

Hallo,

mein HTML-Dokument arbeitet mit dem Attribut ScrollTop damit ich eine Art Infotext als Hinweis neben eine textstelle schreiben kann. Sobald der Benutzer über die Passage fährt, sieht er den Infotipp. In allen Browser wird ja mit pageYOffset gearbeitet, was kein Problem darstellt. Mein Dokument ist XHTML Transitional, wobei es auch strict oder 1.1 sein könnte, aber eben das Attribut "target" in den Links erhalten sein soll.

Im IE tritt nun folgendes Phänomen auf:
Wenn ich die Zeile <?xml ... herausnehme, enthält die Eigenschaft ScrollTop immer 0. Ich muss erst wieder die Zeile hinzufügen, damit ich das gewünschte Eregebnis sehen kann.

Woran liegt das? Gibt es Workaraouns?

Viele Grüße,
Marco

  1. Im IE tritt nun folgendes Phänomen auf:
    Wenn ich die Zeile <?xml ... herausnehme, enthält die Eigenschaft ScrollTop immer 0. Ich muss erst wieder die Zeile hinzufügen, damit ich das gewünschte Eregebnis sehen kann.

    Woran liegt das? Gibt es Workaraouns?

    Der IE schaltet mit diesem Element in den Quirksmodus, dann ist der Wert von scrollTop in documentElement nicht mehr gesetzt, sondern in window.body

    Jein, in JS schon für das Problem das der IE nicht in den standardmode schaltet soweit ich weiß nicht (die Frage ist aber, warum XHTML?)

    Die JS Lösung sieht so aus:

      
    function pageOffset(win)  
    {  
        if(!win) win = window;  
        var pos = {left:0,top:0};  
      
        if(typeof win.pageXOffset != 'undefined')  
        {  
             // Mozilla/Netscape  
             pos.left = win.pageXOffset;  
             pos.top = win.pageYOffset;  
        }  
        else  
        {  
             var obj = (win.document.compatMode && win.document.compatMode == "CSS1Compat") ?  
             win.document.documentElement : win.document.body || null;  
      
             pos.left = obj.scrollLeft;  
             pos.top = obj.scrollTop;  
        }  
        return pos;  
    }
    

    Struppi.

    1. die Frage ist aber, warum XHTML?

      Struppi,
      Warum nicht?

      Und nein, die Frage ist: Warum JavaScript?

      http://www.1ngo.de/web/infobox.html

      Live long and prosper,
      Gunnar

      --
      „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
      1. Hallo,

        Und nein, die Frage ist: Warum JavaScript?

        weil ich das Infofeld absolut positionieren will, auch wenn gescrollt wird. Geht es gegebenenfalls anders zu realisieren?

        Ich möchte das Infofeld im Grund fast fixiert an einer Stelle haben.

        Gruß,
        Marco

      2. die Frage ist aber, warum XHTML?

        Struppi,
        Warum nicht?

        weil es derzeit keinen Nutzen hat.

        Und nein, die Frage ist: Warum JavaScript?

        http://www.1ngo.de/web/infobox.html

        Die Frage ist berechtigt.

        Struppi.

        1. die Frage ist aber, warum XHTML?
          Warum nicht?
          weil es derzeit keinen Nutzen hat.

          Doch, Struppi. Es zwingt zu sauberer Notation: Es dürfen keine in HTML 4.01 optionalen Tags weggelassen werden, Attributwerte müssen in Anführungszeichen.

          Du verwechselst das nicht mit der i.A. Sinnlosigkeit von XHTML 1.1?

          Live long and prosper,
          Gunnar

          --
          „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
    2. Hallo,

      aber, warum XHTML?

      Die gefertigte Seite wird vermutlich die nächsten 5 Jahre unangetastet existieren, so dass ich glaube, dass bis dahin längst neue Browser herausgekommen sind. Schließlich gibt es ja die heute schon neuere Versionen als HTML.

      pos.top = obj.scrollTop;

      genau das liefert 0, ohne XML.

      Gruß,
      Marco

      1. pos.top = obj.scrollTop;

        genau das liefert 0, ohne XML.

        Och erhalte egal in welchem Modus die Scrollposition.

        Struppi.