Jonas: onmouseout reagiert im IE falsch?

Hi,

<h3>Beispiel-Block</h3>
<p onmouseout="alert('Jetzt bist du draussen');">
Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl. Aliquam imperdiet. Aliquam euismod orci nec pede. Etiam at velit. Suspendisse felis odio, elementum eu, dignissim eget,
<br>&nbsp;<br>
interdum fringilla, arcu. Proin egestas. Morbi id neque. Mauris tincidunt ante sed libero placerat faucibus. Phasellus vel est vel mi commodo vestibulum. Proin justo libero, volutpat nec, imperdiet ut, sodales quis, est. Morbi semper nibh ac eros.
</p>

wenn ich nun mit der Maus in die Leerzeile (<br>&nbsp;<br>) gehe, reagiert bereits der onmouseout-eventhandler. Wieso?

Im FF ist alles in Ordnung.

Jonas

  1. Hi,

    <h3>Beispiel-Block</h3>
    <p onmouseout="alert('Jetzt bist du draussen');">
    Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl. Aliquam imperdiet. Aliquam euismod orci nec pede. Etiam at velit. Suspendisse felis odio, elementum eu, dignissim eget,
    <br>&nbsp;<br>
    interdum fringilla, arcu. Proin egestas. Morbi id neque. Mauris tincidunt ante sed libero placerat faucibus. Phasellus vel est vel mi commodo vestibulum. Proin justo libero, volutpat nec, imperdiet ut, sodales quis, est. Morbi semper nibh ac eros.
    </p>

    wenn ich nun mit der Maus in die Leerzeile (<br>&nbsp;<br>) gehe, reagiert bereits der onmouseout-eventhandler. Wieso?

    Weil dann onmouseover auf der "Leerzeile" (bzw. genauer wohl auf dem BR-Element) feuert - und damit onmouseout auf dem Absatz.

    Im FF ist alles in Ordnung.

    Das wundert mich. Liegt aber vielleicht in dem Falle daran, dass er das BR nicht wirklich als "darstellbares" Element betrachtet. Wenn du stattdessen ein Span mit etwas Textinhalt o.ae. dort platzieren wuerdest, sollte der FF m.E. genauso wie der IE reagieren.

    Hier findest du das ganze noch mal ausfuehrlicher beschrieben:
    http://www.quirksmode.org/js/events_mouse.html#mouseover

    • sowie auch den "Workaround", naemlich das target abzufragen, und dann entsprechend zu reagieren.

    MfG ChrisB

    1. Hi,

      Im FF ist alles in Ordnung.

      Das wundert mich. Liegt aber vielleicht in dem Falle daran, dass er das BR nicht wirklich als "darstellbares" Element betrachtet. Wenn du stattdessen ein Span mit etwas Textinhalt o.ae. dort platzieren wuerdest, sollte der FF m.E. genauso wie der IE reagieren.

      »»

      Du meinst sowas: "<br><span>blablabla<span><br>"?
      Nein, ändert nichts, FF = OK / IE = Problem

      Hier findest du das ganze noch mal ausfuehrlicher beschrieben:
      http://www.quirksmode.org/js/events_mouse.html#mouseover

      Danke für den Hinweis aber wenn ich das richtig verstehe dürfte das nur passieren, wenn das innerere Element ebenfalls einen Event_handler hat und das ist ja nicht der Fall.

      The reason for this is of course event bubbling.

      Also stellt sich jetzt die Frage ist das ein BUG oder logisch richtiges Verhalten? Schliesslich erwarte ich ja eine gewisse Rangordnung, also wenn ein Blockelement eine Onmouseout-Anweisung hat, dass diese erst eintritt, wenn eben genau dieses Blockelement verlassen wird oder eben ein Element darin durch eine eigene Anweisung die übergeordnete überschreibt.

      Danke
      Jonas

      1. Hi,

        Hier findest du das ganze noch mal ausfuehrlicher beschrieben:
        http://www.quirksmode.org/js/events_mouse.html#mouseover

        Danke für den Hinweis aber wenn ich das richtig verstehe dürfte das nur passieren, wenn das innerere Element ebenfalls einen Event_handler hat

        Nein.
        Event treten unabhaengig davon auf, ob du auf sie *reagieren* willst oder nicht.

        The reason for this is of course event bubbling.

        Nach dem W3c Event Model gibt es eine Cpaturing- und eine Bubbling-Phase.
        Nicht alle Browser implementieren beides bzw. beides richtig.

        Aendert aber nichts an obiger Aussage: Passiert unabhaengig davon, ob du nun drauf reagierst oder nicht. (Wobei dir Reaktion darauf u.a. die Moeglichkeit gibt, die jeweilige Phase anzubrechen.)

        Also stellt sich jetzt die Frage ist das ein BUG oder logisch richtiges Verhalten?

        Das Eventhandling im IE ist zwar buggy - aber in diesem Falle ist das Verhalten korrekt.

        Schliesslich erwarte ich ja eine gewisse Rangordnung, also wenn ein Blockelement eine Onmouseout-Anweisung hat, dass diese erst eintritt, wenn eben genau dieses Blockelement verlassen wird

        Es *wird* in dem Moment verlassen, wo du ueber ein anderes Element faehrst. Ob dieses darin oder ausserhalb liegt, spielt keine Rolle.

        MfG ChrisB

        1. Es *wird* in dem Moment verlassen, wo du ueber ein anderes Element faehrst. Ob dieses darin oder ausserhalb liegt, spielt keine Rolle.

          »»

          Hmm, da verstehe ich zwar die Logik hinter dem Prinzip nicht aber was soll man machen. Jetzt nehme ich schon extra den FF, weil es immer heisst da ist alles richtig und dann zeigt der mir nicht mal einen Warnhinweis in der Fehlerkonsole an, na ja.

          Danke
          Jonas

          1. Hi,

            Hmm, da verstehe ich zwar die Logik hinter dem Prinzip nicht aber was soll man machen.

            Schrieb ich bereits - siehe verlinkte Seite.

            Jetzt nehme ich schon extra den FF, weil es immer heisst da ist alles richtig und dann zeigt der mir nicht mal einen Warnhinweis in der Fehlerkonsole an, na ja.

            Weswegen sollte er dich warnen?

            "Attention, you might not have fully understand the event model yet" ...?

            MfG ChrisB

            1. Weswegen sollte er dich warnen?

              "Attention, you might not have fully understand the event model yet" ...?

              Ja stimmt, weshalb auch wenn FF es ja selbst anscheinend auch nicht versteht.

              Jonas

              1. Hi,

                Ja stimmt, weshalb auch wenn FF es ja selbst anscheinend auch nicht versteht.

                Du hast recht - onmouseout feuern alle von mir getesteten Browser nur dann, wenn das innere Element einen mouseover-Handler hat - was mich jetzt gerade auch etwas verwundert ...

                MfG ChrisB

            2. Hi,

              "Attention, you might not have fully understand the event model yet" ...?

              "Achtung, Sie könnten das Ereignis-Modell noch nicht vollständig verstehen haben"

              ==> "understood".

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...
              Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              1. Hallo.

                "Attention, you might not have fully understand the event model yet" ...?

                "Achtung, Sie könnten das Ereignis-Modell noch nicht vollständig verstehen haben"

                ==> "understood".

                ==> "Attention, you might not have _to_ fully understand the event model yet."
                MfG, at

      2. Das wundert mich. Liegt aber vielleicht in dem Falle daran, dass er das BR nicht wirklich als "darstellbares" Element betrachtet. Wenn du stattdessen ein Span mit etwas Textinhalt o.ae. dort platzieren wuerdest, sollte der FF m.E. genauso wie der IE reagieren.
        Du meinst sowas: "<br><span>blablabla<span><br>"?
        Nein, ändert nichts, FF = OK / IE = Problem

        Wenn ich den Code ersetze (also das in dem Beispiel ändere), dann wird sowohl im Firefox 2(.0.0.14) als auch im Internet Explorer 6 der onmouseout-Eventhandler ausgelöst, wenn ich vom Rest des Absatzes aus über den span fahre oder hinaus, aber über dem Absatz bleibe.

        --
        Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
        Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
  2. wenn ich nun mit der Maus in die Leerzeile (<br>&nbsp;<br>) gehe, reagiert bereits der onmouseout-eventhandler. Wieso?

    Um welche Internet-Explorer-Version handelt es sich? Bei meinem IE 6 reagiert der onmouseout-Eventhandler nicht, wenn ich mit der Maus über die Leerzeile fahre. Habe deinen Code in eine valide HTML-4.01-strict-Seite kopiert (ich weiß nicht, ob das eventuell einen Unterschied machen kann).

    --
    Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
    Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
    1. Hallo Timo,

      Um welche Internet-Explorer-Version handelt es sich? Bei meinem IE 6 reagiert der onmouseout-Eventhandler nicht, wenn ich mit der Maus über die Leerzeile fahre. Habe deinen Code in eine valide HTML-4.01-strict-Seite kopiert (ich weiß nicht, ob das eventuell einen Unterschied machen kann).

      Ja das macht soweit ich mich erinnere einen Unterschied, ob sich die Seite im Quirks- oder im standardgemäßen Modus befindet. Allerdings wundert mich, dass der Mouseout-Event bei dir im ausgerechnet Standardmodus nicht auftritt; er sollte nach meiner Erfahrung im Gegenteil bei Eintritt in Kindelemente im Quirksmodus nicht auftreten und im Standardmodus doch! Wahrscheinlich liegt das an den Eigenheiten des BR-Elements.

      Gruß Gernot

    2. Hi, der Grund für das Verhalten liegt ganz woanders an einer Breitenangabe des DIV-Elternelementes. Sehr seltsam und wie gesagt nur im IE.
      Hier mal der gesamte Quelltext(Ohne Div-Style kein Problem):

      **********************************************

        
        
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
      <html xmlns="http://www.w3.org/1999/xhtml">  
      <head>  
      <title>Test Onmouseout</title>  
      <meta http-equiv="pragma" content="no-cache" />  
        
      <style type="text/css">  
      div{width:600px;margin:auto;}  
      </style>  
        
      </head>  
      <body text="#000000" bgcolor="#FFFFFF" />  
        
      <div>  
        
      <h3>Beispiel-Block</h3>  
      <p onmouseout="alert('Du bist draussen');">  
      Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl. Aliquam imperdiet. Aliquam euismod orci nec pede. Etiam at velit. Suspendisse felis odio, elementum eu, dignissim eget,  
      <br>&nbsp;<br>  
      <br>&nbsp;<br>  
      <br>&nbsp;<br>  
      <br>&nbsp;<br>  
      <br>&nbsp;<br>  
      <br>&nbsp;<br>  
      interdum fringilla, arcu. Proin egestas. Morbi id neque. Mauris tincidunt ante sed libero placerat faucibus. Phasellus vel est vel mi commodo vestibulum. Proin justo libero, volutpat nec, imperdiet ut, sodales quis, est. Morbi semper nibh ac eros.  
      </p>  
        
        
      </div>  
        
      </body>  
      </html>  
      
      

      ************************************************

      Dann muss es wohl doch ein Bug sein oder?

      @ChrisB
      Und was ist jetzt mit deiner Meinung in Bezug auf "egal ob event-handler innerhalb, gefeuert wird immer"?

      Jonas

      1. Hi,

        Hi, der Grund für das Verhalten liegt ganz woanders an einer Breitenangabe des DIV-Elternelementes. Sehr seltsam und wie gesagt nur im IE.

        Dann koennte es mit dem graesslichen hasLayout-Konzept des IE zusammenhaengen.

        @ChrisB
        Und was ist jetzt mit deiner Meinung in Bezug auf "egal ob event-handler innerhalb, gefeuert wird immer"?

        Da hast du mich falsch zitiert.

        Ich sagte, dass Events immer *auftreten*, egal ob du auf sie reagierst.

        MfG ChrisB

        1. Hi,

          Dann koennte es mit dem graesslichen hasLayout-Konzept des IE zusammenhaengen.

          Noch nie gehört aber es gibt anscheinend ne Menge drüber zu lesen, werde ich gleich machen. Eine lösung habe ich allerdings mittlerweile schon gefunden. Anstatt nur dem DIV eine Breitenangabe zu geben und davon auszugehen das die <p> dann 100% einnehmen, mache ich diese Angabe nochmal manuell und dann klappts.

          Also nicht nur:
          div{width:600px;margin:auto;}

          sondern:
          div{width:600px;margin:auto;}
          p{width:100%;}

          @ChrisB
          Und was ist jetzt mit deiner Meinung in Bezug auf "egal ob event-handler innerhalb, gefeuert wird immer"?

          Da hast du mich falsch zitiert.

          Ich sagte, dass Events immer *auftreten*, egal ob du auf sie reagierst.

          Ok, dann frage ich mal anders. Du warst der Meinung ich verstehe das Event-Modell nicht und der IE reagiert richtig, während der FF falsch reagiert. Nun, der IE scheint nicht richtig zu reagieren und meine somit scheint auch meine Nutzung des onmouseout vollkommen in Ordnung zu sein oder siehst du da einen Fehler drin? Und der Content deines Verweis denke ich somit auch richtig interpretiert zu haben, eben das allenfalls ein Problem auftreten kann, wenn innerhalb eines aktivierten Bereiches ein weiterer Event-Handler aktiviert wird. Oder liege ich daneben?

          Jonas

          1. Hi,

            Ok, dann frage ich mal anders. Du warst der Meinung ich verstehe das Event-Modell nicht und der IE reagiert richtig, während der FF falsch reagiert.

            Wenn du dich mit dem Mauscursor auf einem Element befindest, und dann ein in diesem liegendes Nachfahrenelement ueberfaehrst - dann tritt mouseout auf dem aeusseren, und mouseover auf dem eben ueberfahrenen Element auf.

            Die Document Object Model (DOM) Level 2 Events Specification definiert:

            mouseover
               The mouseover event occurs when the pointing device is moved onto an element.

            mouseout
               The mouseout event occurs when the pointing device is moved away from an element.

            Gut, ueber "moved *away* from an element" *koennte* man vielleicht streiten wollen - aber zusammen mit der Definition fuer mouseover ist m.E. das einzig sinnvolle Verhalten, dass beim Ueberfahren eines Nachfahrenelements mouseout auf dem umgebenden Element ebenfalls eintritt.

            Und das beschreibt die verlinkte quirksmode-Seite ja auch so.

            Nun, der IE scheint nicht richtig zu reagieren

            "Scheint" ist in solchen Dikussionen nicht hilfreich :-)

            und meine somit scheint auch meine Nutzung des onmouseout vollkommen in Ordnung zu sein oder siehst du da einen Fehler drin?

            Deine *Erwartung* ist einfach falsch.

            Wenn du nur auf mouseout reagieren willst, wenn der Bereich des Elements wirklich verlassen, und nicht etwa ein Nachfahrenelement ueberfahren wurde - dann pruefe explizit darauf. Wie schon geschrieben, nutzt man dazu das target des Events - praktischerweise in Kombination mit sowas wie element.contains. Das ist zwar eine IE-Erfindung, fuer Browser, die es nicht kennen, aber relativ einfach nachzuruesten.

            MfG ChrisB

            1. Hi Chris,

              Wenn du dich mit dem Mauscursor auf einem Element befindest, und dann ein in diesem liegendes Nachfahrenelement ueberfaehrst - dann tritt mouseout auf dem aeusseren, und mouseover auf dem eben ueberfahrenen Element auf.

              Was aber kein Auswirkung haben sollte solange ich keine entsprechende onmouseoveranweisung gebe. Also bleibt der onmouseoutbereich lückenlos und das Problem wie in meinen Fall darf nicht auftreten.

              The mouseover event occurs when the pointing device is moved onto an element.

              »»
              Das war bei meinem ersten Beispiel nicht einmal der Fall, denn eine Leerzeile ist kein Element, schliesslich nimmt <br> ja nicht die ganze Zeile ein oder doch? Anders sieht es mit einem span+text auf volle Breite aus, aber da denke ich dann eben ein ungenutztes onmouseover darf nicht behindern und tut es ja auch nicht, nur in meinem Fall aber eben ausgelöst durch IE+WIDTH. In deinen Spezifikationen lese ich darüber auch nichts, das es behindern sollte.

              mouseout
                 The mouseout event occurs when the pointing device is moved away from an element.

              »»
              Natürlich und das ist für meine Begriffe wenn der gesamte <p> Container verlassen wird, und nicht innerhalb.

              Nun, der IE scheint nicht richtig zu reagieren

              "Scheint" ist in solchen Dikussionen nicht hilfreich :-)

              Na gut, dann bin ich mittlerweile sicher dass er falsch reagiert.

              und meine somit scheint auch meine Nutzung des onmouseout vollkommen in Ordnung zu sein oder siehst du da einen Fehler drin?

              Deine *Erwartung* ist einfach falsch.

              »»

              Warum? meine Erwartung erfüllt sich nun sowohl im FF als auch im IE seit die <p> eine Breitenangabe haben.

              Wenn du nur auf mouseout reagieren willst, wenn der Bereich des Elements wirklich verlassen, und nicht etwa ein Nachfahrenelement ueberfahren wurde - dann pruefe explizit darauf. Wie schon geschrieben, nutzt man dazu das target des Events - praktischerweise in Kombination mit sowas wie element.contains. Das ist zwar eine IE-Erfindung, fuer Browser, die es nicht kennen, aber relativ einfach nachzuruesten.

              Solange ich keine Events innerhalb von Elementenbäumen überlappe, denke ich, ist das nicht notwendig. Aber ich lasse mich gerne anhand eines Negativbeispieles vom Gegenteil überzeugen.

              Aber danke für deine Anregungen
              Jonas

              1. Hi,

                Wenn du dich mit dem Mauscursor auf einem Element befindest, und dann ein in diesem liegendes Nachfahrenelement ueberfaehrst - dann tritt mouseout auf dem aeusseren, und mouseover auf dem eben ueberfahrenen Element auf.

                Was aber kein Auswirkung haben sollte solange ich keine entsprechende onmouseoveranweisung gebe.

                Doch.

                Also bleibt der onmouseoutbereich lückenlos und das Problem wie in meinen Fall darf nicht auftreten.

                *Begreifst* du jetzt bitte endlich, dass der mouseout-Event per Definition in diesem Falle einzutreten *hat*, furzegal, ob du auf mouseover des anderen Elements reagieren willst oder nicht? Danke, dann kommen wir vielleicht weiter.

                Das war bei meinem ersten Beispiel nicht einmal der Fall, denn eine Leerzeile ist kein Element, schliesslich nimmt <br> ja nicht die ganze Zeile ein oder doch? Anders sieht es mit einem span+text auf volle Breite aus, aber da denke ich dann eben ein ungenutztes onmouseover darf nicht behindern und tut es ja auch nicht, nur in meinem Fall aber eben ausgelöst durch IE+WIDTH.

                Dass der IE Standards mehr als "liberal" auslegt, und darueber hinaus von den Umgebungsbedingungen abhaengig inkonsistent, sollte bekannt sein.

                In deinen Spezifikationen lese ich darüber auch nichts, das es behindern sollte.

                Es "behindert" ja auch nicht - sofern du angemessen damit umgehst.

                mouseout
                   The mouseout event occurs when the pointing device is moved away from an element.
                »»
                Natürlich und das ist für meine Begriffe wenn der gesamte <p> Container verlassen wird, und nicht innerhalb.

                Dann wird es Zeit, dass du "deine Begriffe" anspasst.

                Warum? meine Erwartung erfüllt sich nun sowohl im FF als auch im IE seit die <p> eine Breitenangabe haben.

                Das ist schoen fuer deine Erwartung.

                Solange ich keine Events innerhalb von Elementenbäumen überlappe, denke ich, ist das nicht notwendig. Aber ich lasse mich gerne anhand eines Negativbeispieles vom Gegenteil überzeugen.

                Die Events "ueberlappen" sich, zum x-ten Mal, per Definition.
                Ob du darauf reagieren willst oder nicht, bleibt dir ueberlassen.

                MfG ChrisB

                1. Also bleibt der onmouseoutbereich lückenlos und das Problem wie in meinen Fall darf nicht auftreten.

                  *Begreifst* du jetzt bitte endlich, dass der mouseout-Event per Definition in diesem Falle einzutreten *hat*, furzegal, ob du auf mouseover des anderen Elements reagieren willst oder nicht? Danke, dann kommen wir vielleicht weiter.

                  Wir kämen weiter, wenn du endlich begreifst, dass du dich irrst
                  mit deiner Interpretation. Denn, mein lieber Chris, ich zeige dir jetzt mal etwas:

                  Du beharrst so störrisch auf die Richtigkeit deiner Aussage, weil ich ein Element innerhalb des <p> Containers habe. Aber der gleiche Fehler tritt auch auf wenn das nicht der Fall ist. Dazu nutze ich jetzt mal anstatt <p> eben <pre>.

                  <div style="width:600px;margin:auto;">
                  <h3>Beispiel-Block</h3>
                  <pre onmouseout="alert('Du bist draussen');">
                  Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl.
                  Aliquam imperdiet. Aliquam euismod orci nec pede. Etiam at velit. Suspendisse
                  felis odio, elementum eu, dignissim eget,

                  interdum fringilla, arcu. Proin egestas. Morbi id neque. Mauris tincidunt
                  ante sed libero placerat faucibus. Phasellus vel est vel mi commodo vestibulum.
                  Proin justo libero, volutpat nec, imperdiet ut, sodales quis, est.
                  Morbi semper nibh ac eros.
                  </pre>
                  </div>

                  Dass der IE Standards mehr als "liberal" auslegt, und darueber hinaus von den Umgebungsbedingungen abhaengig inkonsistent, sollte bekannt sein.

                  Ja und hier war es doch wohl genau umgekehrt, der IE machts in deinem Sinne, der FF ist in meinem Sinne. Das weisst du schon noch oder?

                  In deinen Spezifikationen lese ich darüber auch nichts, das es behindern sollte.

                  Es "behindert" ja auch nicht - sofern du angemessen damit umgehst.

                  Genau indem ich keine Anweisung innerhalb des äusseren Elements auf ein inneres Element lege.

                  Natürlich und das ist für meine Begriffe wenn der gesamte <p> Container verlassen wird, und nicht innerhalb.

                  Dann wird es Zeit, dass du "deine Begriffe" anspasst.

                  Nein du.

                  Warum? meine Erwartung erfüllt sich nun sowohl im FF als auch im IE seit die <p> eine Breitenangabe haben.

                  Das ist schoen fuer deine Erwartung.

                  Und wider deiner Erwartung!

                  Die Events "ueberlappen" sich, zum x-ten Mal, per Definition.
                  Ob du darauf reagieren willst oder nicht, bleibt dir ueberlassen.

                  Das steht ausser Frage und hat ja auch offensichtlich nichts mit dem IE-Bug zu tun.

                  Jonas

                  1. Hi,

                    Wir kämen weiter, wenn du endlich begreifst, dass du dich irrst
                    mit deiner Interpretation. Denn, mein lieber Chris, ich zeige dir jetzt mal etwas:

                    Wenn du weiterhin von der absurden Idee ausgehen willst, etwas sei "richtig", weil es irgendein Browser "so macht" - dann koennen wir die Diskussion auch jetzt gleich beenden.

                    Du beharrst so störrisch auf die Richtigkeit deiner Aussage, weil ich ein Element innerhalb des <p> Containers habe. Aber der gleiche Fehler tritt auch auf wenn das nicht der Fall ist. Dazu nutze ich jetzt mal anstatt <p> eben <pre>.

                    Welcher Browser?
                    Und *vollstaendige*, *valide*, Beispiele, im Standards Compliant Mode bitte.
                    Alles andere lohnt keiner Diskussion.

                    Dass der IE Standards mehr als "liberal" auslegt, und darueber hinaus von den Umgebungsbedingungen abhaengig inkonsistent, sollte bekannt sein.

                    Ja und hier war es doch wohl genau umgekehrt, der IE machts in deinem Sinne, der FF ist in meinem Sinne. Das weisst du schon noch oder?

                    Meine Aussage zielte in allererster Linie darauf, dass der IE es von den Umgebungsbedingungen abhaengig macht - in deinem initialen Beispiel bspw. von der Breitenangabe.

                    Es "behindert" ja auch nicht - sofern du angemessen damit umgehst.

                    Genau indem ich keine Anweisung innerhalb des äusseren Elements auf ein inneres Element lege.

                    Wenn du weisst, was du willst und wie es funktioniert - wozu diskutieren wir hier eigentlich?

                    MfG ChrisB

                    1. Hi,

                      Wenn du weiterhin von der absurden Idee ausgehen willst, etwas sei "richtig", weil es irgendein Browser "so macht" - dann koennen wir die Diskussion auch jetzt gleich beenden.

                      Der Grundgedanke war wohl eher etwas ist "NICHT" richtig, weil es irgendeiner Browser so macht.

                      Du beharrst so störrisch auf die Richtigkeit deiner Aussage, weil ich ein Element innerhalb des <p> Containers habe. Aber der gleiche Fehler tritt auch auf wenn das nicht der Fall ist. Dazu nutze ich jetzt mal anstatt <p> eben <pre>.

                      Welcher Browser?
                      Und *vollstaendige*, *valide*, Beispiele, im Standards Compliant Mode bitte.
                      Alles andere lohnt keiner Diskussion.

                      Och an den paar Zeilen solls nicht scheitern, bitte:
                      ****************************************

                        
                      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
                      <html xmlns="http://www.w3.org/1999/xhtml">  
                      <head>  
                      <title>Test Onmouseout mit PRE</title>  
                      <meta http-equiv="pragma" content="no-cache" />  
                      <style type="text/css">  
                      div{width:600px;margin:auto;}  
                      </style>  
                      </head>  
                      <body text="#000000" bgcolor="#FFFFFF" />  
                        
                      <div>  
                      <div>  
                      <h3>Beispiel-Block</h3>  
                      <pre onmouseout="alert('Du bist draussen');">  
                      Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl.  
                      Aliquam imperdiet. Aliquam euismod orci nec pede. Etiam at velit. Suspendisse  
                      felis odio, elementum eu, dignissim eget,  
                        
                        
                        
                        
                        
                      interdum fringilla, arcu. Proin egestas. Morbi id neque. Mauris tincidunt  
                      ante sed libero placerat faucibus. Phasellus vel est vel mi commodo vestibulum.  
                      Proin justo libero, volutpat nec, imperdiet ut, sodales quis, est.  
                      Morbi semper nibh ac eros.  
                      </pre>  
                      </div>  
                        
                        
                      </body>  
                      </html>  
                      
                      

                      ********************************

                      Dass der IE Standards mehr als "liberal" auslegt, und darueber hinaus von den Umgebungsbedingungen abhaengig inkonsistent, sollte bekannt sein.

                      Ja und hier war es doch wohl genau umgekehrt, der IE machts in deinem Sinne, der FF ist in meinem Sinne. Das weisst du schon noch oder?

                      Meine Aussage zielte in allererster Linie darauf, dass der IE es von den Umgebungsbedingungen abhaengig macht - in deinem initialen Beispiel bspw. von der Breitenangabe.

                      Nö, so hast du das nicht gesagt, sondern so:
                      ***************************************

                      Das wundert mich. Liegt aber vielleicht in dem Falle daran, dass er das BR nicht wirklich als "darstellbares" Element betrachtet. Wenn du stattdessen ein Span mit etwas Textinhalt o.ae. dort platzieren wuerdest, sollte der FF m.E. genauso wie der IE reagieren.

                      ***************************************

                      Wenn du weisst, was du willst und wie es funktioniert - wozu diskutieren wir hier eigentlich?

                      Weil ich nicht einmal von dir gehört habe, dass eben doch das Verhalten im IE falsch ist, während das im FF vollkommen richtig war.

                      Aber ich denke wir sind mittlerweile an einem Punkt wo es schön wäre wenn auch mal Jemand anders seine Meinung dazu sagen würde. Damit mal ein wenig Klarheit rein kommt, und somit ein verwertbares Resultat dieser Diskussion für die Annalen des Archivs.

                      Jonas

                      1. Welcher Browser?
                        Und *vollstaendige*, *valide*, Beispiele, im Standards Compliant Mode bitte.
                        Alles andere lohnt keiner Diskussion.

                        Oh ich vergaß:

                        IE6 SP2 = der besagte Fehler
                        FF 2.0.0.3 = Alles OK, wie erwartet.

                        1. Hi,

                          Oh ich vergaß:

                          IE6 SP2 = der besagte Fehler

                          Es ist bekannt, dass der IE 6 Mousevents teilweise nur auf die Bereiche eines Elements bezieht, an denen sich tatsaechlich *Inhalt* befindet.

                          FF 2.0.0.3 = Alles OK, wie erwartet.

                          Ja, wie erwartet.

                          MfG ChrisB

                          1. Es ist bekannt, dass der IE 6 Mousevents teilweise nur auf die Bereiche eines Elements bezieht, an denen sich tatsaechlich *Inhalt* befindet.

                            »»
                            Aha, ja mir wars nicht bekannt und das zu erfahren hätte diesen langen Thread sehr stark verkürzt.

                            FF 2.0.0.3 = Alles OK, wie erwartet.

                            Ja, wie erwartet.

                            Mooooment;-) Du hast das nicht erwartet, will dich jetzt nicht schon wieder zitieren.

                            Abba na jut
                            Hab Dank fürs Brainstorming;-)
                            Jonas

                            1. Hi,

                              FF 2.0.0.3 = Alles OK, wie erwartet.

                              Ja, wie erwartet.

                              Mooooment;-) Du hast das nicht erwartet,

                              Du brauchst nicht versuchen, mir zu sagen, was ich angeblich erwartet habe - hoechstens, wo du mich schon wieder nicht verstanden hast.

                              Du hast nur ein Element PRE mit keinen weiteren Elementen drin, sondern nur Text - und wenn du ueber diesem Element herumfaehrst, gibt es natuerlich keinen Grund, dass irgendwo mouseout auftreten sollte (weil nichts anderes da ist, auf dem mouseover auftreten koennte).

                              Lediglich der alte IE sieht das falsch - weil er irgendwie annimmt, in dem Element waere dort, wo sich kein Inhalt befindet, ein "Loch" durch das man das darunter liegende Div-Element "ueberfahren" koennte.

                              MfG ChrisB

                              1. Du brauchst nicht versuchen, mir zu sagen, was ich angeblich erwartet habe - hoechstens, wo du mich schon wieder nicht verstanden hast.

                                Fällt es Dir wirklich so schwer einen Fehler einzugestehen?
                                Wir haben doch nun wirklich die Lösung vor uns liegen.

                                Betrachten wir es doch mal faktisch:

                                1. Wieso hatte ich dieses Problem?

                                Antwort: Weil der IE6 falsch reagiert.(Wie du mittlerweile auch sagst)

                                Deine Antwort vorher war aber die Verlinkung auf eine ganz andere Problematik.

                                Du lagst also falsch!

                                Und deine Aussage der FF müsste eigentlich wie der IE reagieren, war ebenso falsch!

                                Mir immer wieder zu sagen ich verstehe dich falsch oder angriffslustige Sätze wie die fiktive Fehlermeldung im FF, ändern nichts an der Tatsache, dass du falsch lagst. Du kannst die Fakten nicht leugnen.

                                Lediglich der alte IE sieht das falsch - weil er irgendwie annimmt, in dem Element waere dort, wo sich kein Inhalt befindet, ein "Loch" durch das man das darunter liegende Div-Element "ueberfahren" koennte.

                                Ja genau und für die Nachwelt: Das Problem lässt sich leicht mit einer passenden Breitenangabe beheben. Und hat rein gar nichts mit dem eigentlichen Event-Handler zu tun.

                                1. Hi,

                                  Fällt es Dir wirklich so schwer einen Fehler einzugestehen?

                                  Wenn ich einen gemacht habe - nein.

                                  1. Wieso hatte ich dieses Problem?

                                  Antwort: Weil der IE6 falsch reagiert.(Wie du mittlerweile auch sagst)

                                  Deine Antwort vorher war aber die Verlinkung auf eine ganz andere Problematik.

                                  Nein - auf eine exakte Beschreibung der *Thematik*, so wie sie sich laut Spezifikation darstellt.

                                  Du lagst also falsch!

                                  Nein.

                                  Und deine Aussage der FF müsste eigentlich wie der IE reagieren, war ebenso falsch!

                                  Meine Aussage, dass der FF eigentlich so reagieren *muesste*, wie ich es beschrieb - mouseout feuert beim mouseover auf ein Nachfahrenelement - ist absolut richtig.
                                  Ob er das im Widerspruch zur Spezifikation im konkreten Einzelfalle tut oder nicht, und ggf. von welchen Umgebungbedingungen abhaengig, ist eine andere Geschichte.

                                  Mir immer wieder zu sagen ich verstehe dich falsch oder angriffslustige Sätze wie die fiktive Fehlermeldung im FF, ändern nichts an der Tatsache, dass du falsch lagst.

                                  Btw: Du verstehtst mich immer noch falsch.

                                  Du kannst die Fakten nicht leugnen.

                                  Im Gegensatz zu dir versuche ich das auch nicht.

                                  Lediglich der alte IE sieht das falsch - weil er irgendwie annimmt, in dem Element waere dort, wo sich kein Inhalt befindet, ein "Loch" durch das man das darunter liegende Div-Element "ueberfahren" koennte.

                                  Ja genau und für die Nachwelt: Das Problem lässt sich leicht mit einer passenden Breitenangabe beheben.

                                  In diesem Falle vielleicht.

                                  Und hat rein gar nichts mit dem eigentlichen Event-Handler zu tun.

                                  So, und jetzt schau dir bitte dieses Beispiel mal mit dem Firefox an (ich habe 2.0.0.14 zum Testen verwendet):
                                  http://chrisb.bplaced.net/test/mouseout.htm

                                  Und dann faehrst du mal mit der Maus zuerst ueber den Div, und dann ueber den blau hinterlegten Absatz darin ...

                                  Schau dir die Debugausgabe an, welche Events in welcher Reihenfolge feuern.

                                  Und dann kommentiere die letzten zwei Eventzuweisungen, die dem Absatz P mouseover/-out zuweisen, mal aus.
                                  Du sieht, beim Ueberfahren des Absatzes feuert nach wie vor onmouseout des Divs, auch wenn auf die Events, die auf dem Absatz auftreten, gar nicht mehr reagiert wird.

                                  Magst du jetzt langsam begreifen, wo von ich die ganze Zeit rede?

                                  MfG ChrisB

                                  1. Hallo Chris,

                                    ja, du hast vollkommen recht was das Verhalten betrifft, wenn innerhalb eines Elementes ein anderes Element auftaucht. Das ist mir neu und hätte ich so auch nicht erwartet. Daher danke für diesen Hinweis.

                                    Das Problem meiner eigentlichen Frage allerdings liegt ausschliesslich daran, dass der IE6 nicht mit leeren Zeilen in so einem Fall klarkommt.
                                    Und ein <br /> oder hunderten <br />s lösen kein Event aus, auch nicht in deinen Prüfungsfunktionen. Es kommt lediglich zu einem Fehlverhalten im IE6 das den Anschein einer Eventproblematik hat, ist aber nicht der Fall.

                                    So und wenn du nun dein Beispiel realistischer an meine Anfangsfrage anpasst, wirst du 2 Sachen erkennen.

                                    1. Deine Eventüberwachung reagiert nicht bei- oder zwischen <br />

                                    2. Der IE (Überwachungsscript entfernen, sonst kommt sich das ins Gehege)reagiert dennoch auf die Leerzeilen falsch.

                                    *********************************************

                                      
                                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
                                         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
                                    <html xmlns="http://www.w3.org/1999/xhtml">  
                                    <head>  
                                    <title>Titel</title>  
                                    <meta http-equiv="content-type" content="text/html; charset=utf-8" />  
                                    <style type="text/css">  
                                    div { width:500px; margin:auto;}  
                                    p{border:1px solid red;}  
                                    p span { background:blue; }  
                                    </style>  
                                      
                                    </head>  
                                    <body>  
                                      
                                    <div>  
                                    <h3>Beispiel-Block</h3>  
                                    <p onmouseout="alert('Du bist draussen');">  
                                    Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl. Aliquam imperdiet. Aliquam euismod  
                                    Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl. Aliquam imperdiet orci  
                                    <br />000000<br />  
                                    <br />000000<br />  
                                    <br />000000<br />  
                                    00000 00000 0000000 000 00000 000  
                                    00000 00000 0000000 000 00000 000  
                                    00000 00000 0000000 000 00000 000  
                                    00000 00000 0000000 000 00000 000  
                                    00000 00000 0000000 000 00000 000  
                                    00000 00000 0000000 000 00000 000  
                                    <br />000000<br />  
                                      
                                    nec pede. Etiam at velit. Suspendisse felis odio, elementum eu, dignissim eget,  
                                      
                                    Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl. Aliquam imperdiet  
                                    Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl. Aliquam imperdiet  
                                    Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl. Aliquam imperdiet  
                                      
                                    <span>interdum fringilla, arcu. Proin egestas. Morbi id neque. Mauris tincidunt ante sed libero placerat faucibus. Phasellus vel est vel mi commodo vestibulum. Proin justo libero, volutpat nec, imperdiet ut, sodales quis, est. Morbi semper nibh ac eros  
                                    </span> interdum fringilla, arcu. Proin egestas. Morbi id neque. Mauris tincidunt ante sed libero placerat faucibus. Phasellus vel est vel mi commodo vestibulum. Proin justo libero, volutpat nec, imperdiet ut, sodales quis, est. Morbi semper nibh ac eros.</p>  
                                    </div>  
                                    </body>  
                                    </html>  
                                    
                                    

                                    *******************************************

                                    Gruss
                                    Jonas

                                    1. Hi,

                                      Das Problem meiner eigentlichen Frage allerdings liegt ausschliesslich daran, dass der IE6 nicht mit leeren Zeilen in so einem Fall klarkommt.

                                      Like I said ...

                                      Und ein <br /> oder hunderten <br />s lösen kein Event aus, auch nicht in deinen Prüfungsfunktionen.

                                      Gut, das war nur eine Vermutung.
                                      BR ist nun mal kein wirklich dargestelltes Element, insofern auch kein mouseevent darauf.

                                      Es kommt lediglich zu einem Fehlverhalten im IE6 das den Anschein einer Eventproblematik hat, ist aber nicht der Fall.

                                      Ein generelles Problem damit, zu erkennen, wann man sich "auf" einem Element befindet, wenn das Element "leere" Stellen hat.
                                      Analog bspw. bei Navigationslisten mit ueber die ganze Breite gehenden Links - kein Inhalt, kein :hover. Auch hier muss man nachhelfen.

                                      So und wenn du nun dein Beispiel realistischer an meine Anfangsfrage anpasst,

                                      Wieso ich? :-) Das darfst du machen.

                                      wirst du 2 Sachen erkennen.

                                      1. Deine Eventüberwachung reagiert nicht bei- oder zwischen <br />

                                      Wie gesagt, nur eine Vermutung.
                                      Und doch nicht falsch, weil BR - und damit die Leerzeile - hier der Ausloeser war.

                                      1. Der IE (Überwachungsscript entfernen, sonst kommt sich das ins Gehege)reagiert dennoch auf die Leerzeilen falsch.

                                      Like I said ...

                                      MfG ChrisB

                                      --
                                      "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
                      2. grrr, schon wieder Fehler, wegen zu schnelles unüberlegtes Hinundherkopiere, jetzt aber;-)

                          
                        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
                        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
                        <html xmlns="http://www.w3.org/1999/xhtml">  
                        <head>  
                        <title>Test Onmouseout mit PRE</title>  
                        <meta http-equiv="pragma" content="no-cache" />  
                        <style type="text/css">  
                        div{width:600px;margin:auto;}  
                        </style>  
                        </head>  
                        <body text="#000000" bgcolor="#FFFFFF">  
                          
                        <div>  
                        <h3>Beispiel-Block</h3>  
                        <pre onmouseout="alert('Du bist draussen');">  
                        Suspendisse non est vel lacus mattis gravida. Duis feugiat convallis nisl.  
                        Aliquam imperdiet. Aliquam euismod orci nec pede. Etiam at velit. Suspendisse  
                        felis odio, elementum eu, dignissim eget,  
                          
                          
                          
                          
                          
                        interdum fringilla, arcu. Proin egestas. Morbi id neque. Mauris tincidunt  
                        ante sed libero placerat faucibus. Phasellus vel est vel mi commodo vestibulum.  
                        Proin justo libero, volutpat nec, imperdiet ut, sodales quis, est.  
                        Morbi semper nibh ac eros.  
                        </pre>  
                        </div>  
                          
                          
                        </body>  
                        </html>