molily: Div ausblenden, wenn man außerhalb klickt

Beitrag lesen

document.onclick = function(e)

{
  if(!e)
  {
    e = window.event;
  }
  var obj = e.target ? e.target : e.srcElement ? e.srcElement : null;
  if( div_id != obj )
  {
    div_id.style.display = 'none';
  }


>   
> Scheint eigentlich in allen Browsern (IE/FF/Opera/Chrome/Safari) zu laufen.  
  
Das kann nicht sein.  
  
Du fragst hier ab, welches Element das Ziel des Klicks ist - und vergleichst, ob dieses Element identisch mit dem div-Container ist.  
  
Wenn ich allerdings auf einen Link im div-Element klicke, so ist der Link das Ziel des Events. D.h. div != Event-Target, also müsste das div versteckt werden. Das war aber nicht Sinn der Sache, oder?  
  
Der Ansatz ist aber schon ganz richtig, aber dich interessiert vielmehr, ob das Zielelement  
1\. das div selbst ist  
2\. oder ein Element, das im div liegt (halt ein Link)  
  
Dazu bieten die Browser außer Firefox die Methode .contains() an:  
  
if (eventTarget != divContainer && !divContainer.contains(eventTarget)) {  
   /\* Klick kam nicht vom div oder seinen Kindelementen \*/  
}  
  
Für den Firefox bindest du [dieses Script](http://forum.de.selfhtml.org/archiv/2008/7/t173611/#m1140229) ein, sodass er ebenfalls .contains() kennt.  
  
Mathias

-- 
[JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)