IE arbeitet gegen mich (?)

Asteria

Mitglied
Hey zusammen ! :)

Ich hab' einen Tooltip Script, der das title Attribut ausliest
und als <div> darstellt.. dieser <div> soll eigentlich direkt am
Mauszeiger angezeigt werden..
Firefox und Chrome kriegen das hin.. hab's grad mit
dem IE getestet.. und es hat natürlich nicht funktioniert :-/

Fehlermeldung war:
SCRIPT5007: Für die Eigenschaft "clientX" kann kein Wert abgerufen werden: Das Objekt ist Null oder undefiniert


Und der Script sieht wie folgt aus:
Code:
var qTipTag = "div,img";
var qTipX = 0;
var qTipY = 15;


tooltip = {
  name : "qTip",
  offsetX : qTipX,
  offsetY : qTipY,
  tip : null
}

tooltip.init = function () {
        var tipNameSpaceURI = "http://www.w3.org/1999/xhtml";
        if(!tipContainerID){ var tipContainerID = "qTip";}
        var tipContainer = document.getElementById(tipContainerID);

        if(!tipContainer) {
          tipContainer = document.createElementNS ? document.createElementNS(tipNameSpaceURI, "div") : document.createElement("div");
                tipContainer.setAttribute("id", tipContainerID);
          document.getElementsByTagName("body").item(0).appendChild(tipContainer);
        }

        if (!document.getElementById) return;
        this.tip = document.getElementById (this.name);
        if (this.tip) { document.onmousemove = function (event) { tooltip.move (event) } ; }

        var a, sTitle, elements;
        var a2, sTitle2, elements2;

        var elementList = qTipTag.split(",");
        for(var j = 0; j < elementList.length; j++)
        {
                elements = document.getElementsByTagName(elementList[j]);
                if(elements)
                {
                        for (var i = 0; i < elements.length; i ++)
                        {
                                a = elements[i];
                                sTitle = a.getAttribute("title");
                                if(sTitle)
                                {
                                        a.setAttribute("tiptitle", sTitle);
                                        a.removeAttribute("title");
                                        a.removeAttribute("alt");
                                        a.onmouseover = function() { tooltip.show(this.getAttribute('tiptitle'))};
                                        a.onmouseout = function() { tooltip.hide() } ;
                                }
                        }
                }
        }
}



tooltip.move = function (happening) {
        var x=0, y=0;
        if (document.all) {//IE
                x = (document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
                y = (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
                x += document.happening.clientX;
                y += document.happening.clientY;

        } else {//Good Browsers
                x = happening.pageX;
                y = happening.pageY;
        }
        x=x-19;
        tooltip.tip.style.left = (x + this.offsetX) + "px";
        tooltip.tip.style.top = (y + this.offsetY) + "px";
}

tooltip.show = function (text) {
        if (!tooltip.tip) return;
        tooltip.tip.innerHTML = text;
        tooltip.tip.style.display = "block";
}

tooltip.hide = function () {
        if (!tooltip.tip) return;
        tooltip.tip.innerHTML = "";
        tooltip.tip.style.display = "none";
}

function myTipActive () {
        tooltip.init () ;
}


Hoffe sehr jemand hat 'ne Idee, was falsch ist :(
Beste Grüße
 
Mhh.. ich dachte ich würde das event übergeben
und als Parameter "happening" auslesen und weiterverwenden..
Im Firefox usw funktioniert das ja auch.

Aber window.event klappt einwandfrei!
Ich danke vielmals für deine Hilfe!
Das war sehr sehr sehr hilfreich !! :)
 
Mhh.. ich dachte ich würde das event übergeben
und als Parameter "happening" auslesen und weiterverwenden..
Im Firefox usw funktioniert das ja auch.

Das stimmt so weit auch, aber der IE übergibt dem Event-Handler eben kein Event-Objekt, sondern man muss das globale window.event benutzen. Also läuft dein else-Zweig korrekt ab (nicht-IE), aber der if-Zweig funktionierte nicht.
 

Neue Beiträge

Zurück