Jens Müller: DOM Events Chrome und Opera

Moin Moin,
zuerst mal ein ganz einfaches kurzes Script

  
function getClickID(event)  
  {  
  var nav = navigator.userAgent;  
  
  if(window.event)  
    {  
    var el  = window.event.srcElement;  
    var clickID = el.getAttribute('id');  
    alert('M$ Event Model: ' +clickID +' ' +nav);  
    }  
  
  if(document.addEventListener)  
    {  
    var clickID = event.target.getAttribute('id');  
    alert('DOM Event Model: ' +clickID +' ' +nav);  
    }  
  }

Interessanterweise, feuern bei beiden Event Modellen sowohl Opera als auch Google Chrome. window.event und document.addEventListener. Wie kann ich nun erreichen dass, sowohl Opera als auch Chrome eine der beiden Event Modelle bevorzugt behandeln, und die andere unter den Tisch fallen lassen.

Eventuel mit?

  
function doSomethingID(event)  
  {  
  var nav = navigator.userAgent;  
  
  if(document.addEventListener)  
    {  
    var clickID = event.target.getAttribute('id');  
    alert('DOM Event Model: ' +clickID +' ' +nav );  
    }  
  
  if(!document.addEventListener)  
    {  
    if(window.event)  
      {  
      var el  = window.event.srcElement;  
      var clickID = el.getAttribute('id');  
      alert('M$ Event Model: ' +clickID +' ' +nav);  
      }  
    }  
  }

Wobei, finde ich wenigstens, dies ein wenig zu viel des Guten ist.
Entspricht in etwa als wenn mich die Kassieren im Supermarkt fragt, "Bargeld oder Karte?". Um dann noch hinzuzufügen: "Wenn sie keine Karte haben, nehmen wir auch Ihr Bargeld. Aber Kartenzahlung ist uns lieber"

gruesse aus'm ruhrpott
  jens mueller

--
As long as a single mind remembers, as long as a single heart
beats with passion, how can a dream die?
\//_ Live long and prosper
sh:( fo:) ch:| rl:° br:^ n4:| ie:% mo:| va:} de:> zu:) fl:( ss:) ls:> js:|[/code]
  1. Hi,

    mit else.

      
      if(window.event)  
        {  
        var el  = window.event.srcElement;  
        var clickID = el.getAttribute('id');  
        alert('M$ Event Model: ' +clickID +' ' +nav);  
        }  
      
      else if(document.addEventListener)  
        {  
        var clickID = event.target.getAttribute('id');  
        alert('DOM Event Model: ' +clickID +' ' +nav);  
        }  
      }
    

    ~dave

    1. @@dave:

      nuqneH

      mit else.

      Aber andersrum.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
  2. @@Jens Müller:

    nuqneH

    Wie kann ich nun erreichen dass, sowohl Opera als auch Chrome eine der beiden Event Modelle bevorzugt behandeln, und die andere unter den Tisch fallen lassen.

    else kennst du? (Nein, die Nachbarstochter ist nicht gemeint.)

    Erst auf document.addEventListener prüfen, dann im else-Zweig auf window.event.

    var nav = navigator.userAgent;

    Nicht dein Ernst, oder?

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  3. Eventuel mit?

    function doSomethingID(event)
      {
      var nav = navigator.userAgent;

    if(document.addEventListener)
        {
        var clickID = event.target.getAttribute('id');
        alert('DOM Event Model: ' +clickID +' ' +nav );
        }

    if(!document.addEventListener)
        {
        if(window.event)
          {
          var el  = window.event.srcElement;
          var clickID = el.getAttribute('id');
          alert('M$ Event Model: ' +clickID +' ' +nav);
          }
        }
      }

    
    >   
      
    Das geht einfacher:  
    ~~~javascript
      
    function doSomethingID(event)  
    {  
       if(!event) event = window.event; // Wobei ich nicht sicher bin, ob diese Zeile notwendig ist  
       var el = event.target || event.srcElement;  
       var clickID = el.id;  
    }
    

    Struppi.