Timon: Probleme im IE mit this.title und this.href

Hallo,

Kurze Frage: Kann mir einer sagen, wie ich im InternetExplorer (Nein, ich mag ihn nicht!) den Link-Titel und Link-Href herausfinden kann?

Der IE macht es einfach nicht so wie ich es will , obwohl 'this' nicht 'Null' ist...

Der Code:

function dasein(e) {  
       document.getElementById('infodiv').style.display = 'block';  
  
       if (this.title != null) {  
        tittell = this.title.substr(0,15);  
       } else {  
        tittell = 'Grrrrr...';  
       }  
  
       if (this.href != null) {  
        addro = this.href;  
       } else {  
        addro = 'scheiss IE';  
       }  
  
       if (addro.length < 30) {  
        addr = addro;  
       } else {  
        addr = addro.substr(0,30) + '...';  
       }  
  
       if (this == null) {  
        addr = 'alles im a****';  
       }  
  
       document.getElementById('infodiv').innerHTML = '<font size=\"5\">' + tittell + '</font><br />' + addr;  
      }  

Timon @ http://www.wahnsinn.de.tl

--
Käsebrötchen
Selfcode: sh:( fo:) ch:| rl( br:^ n4:& ie:{ mo:) va:) de:] zu:| fl:| ss:) ls:[ js:|
  1. hi,

    Der IE macht es einfach nicht so wie ich es will , obwohl 'this' nicht 'Null' ist...

    Sondern?

    gruß,
    wahsaga

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

      Der IE macht es einfach nicht so wie ich es will , obwohl 'this' nicht 'Null' ist...

      Sondern?

      wenn ich es mit alert(this) ausgeben lasse, sagt es [object]...

      Timon @ http://www.wahnsinn.de.tl

      --
      Käsebrötchen
      Selfcode: sh:( fo:) ch:| rl( br:^ n4:& ie:{ mo:) va:) de:] zu:| fl:| ss:) ls:[ js:|
      1. hi,

        wenn ich es mit alert(this) ausgeben lasse, sagt es [object]...

        Eigentlich sollte die toString-Methode eines Links dafür sorgen, dass der href-Inhalt ausgegeben wird.

        Wie rufst du die Funktion denn auf?

        gruß,
        wahsaga

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

          wenn ich es mit alert(this) ausgeben lasse, sagt es [object]...

          Eigentlich sollte die toString-Methode eines Links dafür sorgen, dass

          der href-Inhalt ausgegeben wird.

          das manual sagt: Wandelt eine Zahl in eine Zeichenkette (String) um (kann man sich auch denken...). Ich weiss nur leider nicht, wie ich das hier einbringen soll, das gibt für mich keinen Sinn...

          this.title gibt 'undefined', genauso wie this.href...

          Wie rufst du die Funktion denn auf?

          onMouseOver, und im Firefox & Opera gehts...

          Timon @ http://www.wahnsinn.de.tl

          --
          Käsebrötchen
          Selfcode: sh:( fo:) ch:| rl( br:^ n4:& ie:{ mo:) va:) de:] zu:| fl:| ss:) ls:[ js:|
          1. hi,

            Wie rufst du die Funktion denn auf?
            onMouseOver, und im Firefox & Opera gehts...

            _Wie_ heisst Code ...

            gruß,
            wahsaga

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

              Wie rufst du die Funktion denn auf?
              onMouseOver, und im Firefox & Opera gehts...

              _Wie_ heisst Code ...

              Karl-Gustav?

              Einen schönen Sonntag noch.

              Gruß, Math*scnr*ias

              --
              ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
              debian/rules
            2. hi,

              Wie rufst du die Funktion denn auf?
              onMouseOver, und im Firefox & Opera gehts...

              _Wie_ heisst Code ...

              Ok, dann hier mal mein Scriptentwurf (wird vor dem schließenden </body> - Tag eingebunden) :

                
              //------------------------------  
              document.write('<div style=\"position:absolute; left:0px; top:0px; min-width: 200px; height:50px; background-image:url(http://derwahnsinn.de.funpic.de/bilder/trbox.png); display:none; color:#ffffff; border: 1px solid #009900\" id=\"infodiv\">info</div>');  
                    function hingehen(e) {  
                     x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;  
                     y = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;  
                     breite = (document.body.clientWidth) ? document.body.clientWidth : window.innerWidth;  
                
                     if ((breite / 2) < x) {  
                      x = x - 200;  
                     }  
                
                     if (document.getElementById("infodiv") != null) {  
                      document.getElementById("infodiv").style.left = (x) + "px";  
                      document.getElementById("infodiv").style.top = (y + 20) + "px";  
                     }  
                    }  
                    function dasein(e) {  
                     document.getElementById('infodiv').style.display = 'block';  
                
                     if (this.tip != null) {  
                      if (this.title.length <= 15) {  
                       tittell = this.tip;  
                      } else {  
                       tittell = this.tip.substr(0,13) + '...';  
                      }  
                      addro = this.href;  
                     } else {  
                      //tittell = this.tip;  
                      //addro = this.href;  
                      z = 0;  
                
                      while (document.getElementsByTagName('a')[z] != this && document.getElementsByTagName('a')[z] != null) {  
                       z++;  
                      }  
                      if (document.getElementsByTagName('a')[z] != null) {  
                       tittell = document.getElementsByTagName('a')[z].tip;  
                       addro = document.getElementsByTagName('a')[z].href;  
                      } else {  
                       tittell = 'Scheiss IE';  
                       addro = 'Hol dir Opera oder Firefox';  
                      }  
                
                     }  
                
                     if (addro.length <= 30) {  
                      addr = addro;  
                     } else {  
                      addr = addro.substr(0,30) + '...';  
                     }  
                
                     if (this == null) {  
                      addr = 'alles im a****';  
                     }  
                
                     document.getElementById('infodiv').innerHTML = '<font size="5">' + tittell + '</font><br />' + addr;  
                    }  
                    function weggehen(e) {  
                     document.getElementById('infodiv').style.display = 'none';  
                    }  
                    function addEvent(obj, eventTyp, func, bul) {  
                      if (obj.addEventListener) {  
                         obj.addEventListener(eventTyp, func, bul);  
                         return true;  
                      } else if (obj.attachEvent) {  
                        var katze = obj.attachEvent("on"+eventTyp, func);  
                         return katze;  
                      } else {  
                        return false;  
                      }  
                    }  
                    i = 0;  
                    var titel = new Array();  
                    while (document.getElementsByTagName('a')[i] != null) {  
                
                    obje = document.getElementsByTagName('a')[i];  
                
                    obje.tip = obje.title;  
                    obje.title = '';  
                
                    addEvent(obje,'mouseover',dasein,false);  
                    addEvent(obje,'mouseout',weggehen,false);  
                
                    i ++;  
                
                    }  
                
                    addEvent(document,'mousemove',hingehen,false);  
                
              //---------------------------  
              
              

              Timon @ http://www.wahnsinn.de.tl

              --
              Käsebrötchen
              Selfcode: sh:( fo:) ch:| rl( br:^ n4:& ie:{ mo:) va:) de:] zu:| fl:| ss:) ls:[ js:|
              1. hi,

                function addEvent(obj, eventTyp, func, bul) {
                        if (obj.addEventListener) {
                           obj.addEventListener(eventTyp, func, bul);
                           return true;
                        } else if (obj.attachEvent) {
                          var katze = obj.attachEvent("on"+eventTyp, func);

                Mit der Funktion läufst du im IE leider in die Falle - weil er bei derartig attach-ten Events in this nicht auf das auslösende Element referenziert.

                gruß,
                wahsaga

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

                  Hi,

                  function addEvent(obj, eventTyp, func, bul) {
                          if (obj.addEventListener) {
                             obj.addEventListener(eventTyp, func, bul);
                             return true;
                          } else if (obj.attachEvent) {
                            var katze = obj.attachEvent("on"+eventTyp, func);

                  Mit der Funktion läufst du im IE leider in die Falle - weil er bei derartig attach-ten Events in this nicht auf das auslösende Element referenziert.

                  Was gäbe es da denn sonst für eine Möglichkeit?

                  Timon @ http://www.wahnsinn.de.tl

                  --
                  Käsebrötchen
                  Selfcode: sh:( fo:) ch:| rl( br:^ n4:& ie:{ mo:) va:) de:] zu:| fl:| ss:) ls:[ js:|
                  1. hi,

                    var katze = obj.attachEvent("on"+eventTyp, func);

                    Mit der Funktion läufst du im IE leider in die Falle - weil er bei derartig attach-ten Events in this nicht auf das auslösende Element referenziert.

                    Was gäbe es da denn sonst für eine Möglichkeit?

                    Wenn du nicht die Möglichkeit brauchst, mehrere Events gleichen Typs an ein Element zu hängen - dann verzichte ganz auf die Funktion, und nutze nur element.onxyz = funktionsreferenz.

                    Ansonsten schau dir eine alternative Lösung zum dynamischen Anhängen von Events bspw. bei molily ab; im Archiv sollte ähnliche Funktionalität auch noch mehrfach zu finden sein.

                    gruß,
                    wahsaga

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

                      var katze = obj.attachEvent("on"+eventTyp, func);

                      Mit der Funktion läufst du im IE leider in die Falle - weil er bei derartig attach-ten Events in this nicht auf das auslösende Element referenziert.

                      Was gäbe es da denn sonst für eine Möglichkeit?

                      nutze nur element.onxyz = funktionsreferenz.

                      Danke das wars. Perfekt.

                      Timon @ http://www.wahnsinn.de.tl

                      --
                      Käsebrötchen
                      Selfcode: sh:( fo:) ch:| rl( br:^ n4:& ie:{ mo:) va:) de:] zu:| fl:| ss:) ls:[ js:|