Webmatze´s Tooltips im IE
  • Hallooo,
    habe mir vor kurzem Webmatzes javascript für Tooltips runtergeladen und auf meiner Seite eingebaut.
    http://www.webmatze.de/webdesign/javascript/tooltips.htm

    Hat im Firefox (1.5) auch wunderbar geklappt aber der IE muckt rum wie ich später gesehen habe. Und zwar ist das probleme, dass der Scrollwert (scrollTop) immer 0 ist. Habe es explizit abgefragt beim debuggen

    function updateWMTT(e) {
    [...]
    y = (document.all) ? window.event.y + document.body.scrollTop : e.pageY;

    [...]
    }

    Dadurch werden die Tooltips an falscher Position dargestellt sobald ich srolle.
    Das eigentlich lustige (oder traurige) ist, dass es bei den Beispielen auf der Webmatzeseite wunderbar funktioniert. Da scrolle ich ja auch runter und sie werden korrekt dargestellt, auch im IE. Das heisst der Fehler muss irgendwo anders liegen aber wo? Werden auch keine Javascriptfehler angezeigt. Habe die funktionen mit Copy und Pase rüebergerbacht

    Meine Seite ist bissel größer da die ganzen Tooltips auch etwas größere tables sind aber habe schon alles ausprobiert.
    Die FUnktionen im head definiert und auch unter den Divs für die Tooltips. Habe die Divs ans ende der Seite gesetzt und direkt hinter den body Tag. Hat alles nichts geholfen.
    Habe im Moment keien Idee mehr woran es liegen könnte, dass
    document.body.scrollTop
    immer 0 zurueck gibt

  • 5 Answers sorted by
  • also erstma hats vlt damit zu tun, dass du die HINTER den body tag gesetzt hast....die müssen IN den body rein, ist normales html.

    des weiteren ist das ganze ne if abfrage :

    y = (document.all) ? window.event.y + document.body.scrollTop : e.pageY;

    ==

    if (document.all) {
    y = window.event.y + document.body.scrollTop
    else{
    y = : e.pageY;
    }

    also entweder wenn es document.all gibt bzw. zugegriffen werden kann, wird die höhe aus window.event.y geholt und dann scrollTop adiert.
    wenn es nicht verfügbar ist wird über das argument des eventes e die höhe bestimmt

    zeig mal bitte deinen quelltext, dann können wir dir sagen, was du falsch gemacht hast

  • danke für die hilfe, du hast mich falsch verstanden bzw ich habe mich undeutlich ausgedrückt

    mit HINTER dem body tag meinte ich direkt hinter dem öffnenden body tag. Ist also schon im Body drin. Den Tip hatte ich aus der Suche hier, hat aber nichts g ebrahct

    Mir ist darüber hinaus klar dass es eine abfrage ist, die nötig ist da die position des Divs in den unterschiedlichen Browsern verschiden berechnet werden muss.
    mit der document.all Abfrage wird einfach geprueft ob der IE der Browser ist, da das all Objekt ein typisches IE element ist. Da es bei mir im Firefox ja geht bin ich auf die Abfrage selbst gar nicht mehr weiter eingegangen.
    Es geht wirklich nur um den Teil mit document.body.scrollTop und wahrscheinlich auch scrollLeft was ich nicht getestet habe da ich auf der x-koordinate net scrolle.
    Dieser Wert ist immer 0. Dadurch wird der Tooltip im IE richtig angezeigt wenn ich nicht scrolle. Sobald ich aber nach unten scrolle, sind die Tooltips logischerweise nach oben versetzt

    Übrigens habe ich meien Seite durch den html validator von W3C gejagt und ist wunderschönes XHTML 1.0.
    Ist irgendwie alles komisch. Wahrscheinlich n ganz peinlicher Fehler drin den ich einfach nicht mehr sehe wie das so oft der Fall ist

    Habe mal eben ein kurzes beispiel hochgeladen. Ist jetzt ganz einfaches html. Habe nur einen Link auf der seite bei dem ein Tooltip erscheint wenn onmousover ausgelöst wird. durch viele br-tags habe ich ihn weiter nach unten gesetzts, damit man scrollen kann. Im IE zerschießt mir das den Tooltip sobald ich ein bissel nach unten gehe, sprich er ist nicht mehr bei der Mouse sondern weiter oben versetzt

    Kann man sich hier anschauen

    tooltip

  • Ich habe mal ein wenig nachgeforscht. So wie es aussieht, verwendest du für deine Seite einen DOCTYPE, der den IE 6 in den "standards compliant mode" setzt. Dadurch werden ein paar Dinge intern vom IE geändert.
    So muß man jetzt den werden scrollTop so auslesen:
    document.documentElement.scrollTop
    anstatt über
    document.body.scollTop.

    Dadurch funktioniert das Script dann im IE 6 nicht mehr richtig.

    Du hast nun die Möglichkeit einen anderen DOCTYPE zu verwenden, oder besser eine abgeänderte Variante des Scripts:






    Damit sollte es dann auch im IE 6 richtig funktionieren.

  • Ok du bist offiziell mein Held und ich würde dich heiraten wenn ich könnte!!!!

    Vielen Dank für die grandiose Hilfe, besonders da es so schnell ging. Hätte ich nicht gedacht. (Klappt übrigens super falls ich es noch nicht erwähnt habe :) )

    Gruß

  • Hallo Webmatze!
    Vielen Dank für deine abgeänderte Version vom 12. Dezember 2005! Ich hatte auch prositionierungsprobleme, welche durch diese Version behoben werden konnten! Super TOOLTIP! Tausend Dank an den Author!

    MfG

Willkommen!

It looks like you're new here. If you want to get involved, click one of these buttons!

Einloggen Registrierung!

Diskussionsteilnehmer

Who's Online (0)