天天看點

div mouseout彈出隐藏漂浮框問題

js中onMouseOut事件冒泡的問題

在做頁面的彈出漂浮窗體。例如下拉菜單時onmouseout讓人非常不可思議,解決辦法如下: 

一、給标簽增加事件監聽 方法 

function addEvent(el, evname, func) 

    if (el.attachEvent) 

    { 

        el.attachEvent("on" + evname, func); 

    }else if (el.addEventListener){ 

        el.addEventListener(evname, func, true); 

    } 

}; 

二、給firefox定義contains()方法,ie下不起作用(ie自身帶有) 

if(typeof(HTMLElement)!="undefined") 

HTMLElement.prototype.contains=function(obj) 

  //通過循環對比來判斷是不是obj的父元素 

  while(obj!=null&&typeof(obj.tagName)!="undefind") 

  { 

   if(obj==this) 

    return true; 

   obj=obj.parentNode; 

  } 

  return false; 

三、隐藏函數 

function HideMyFunc(theEvent) 

if (theEvent) 

  var browser=navigator.userAgent;//取得浏覽器屬性 

  if (browser.indexOf("Firefox")>0) 

   //如果是Firefox 

   if (document.getElementById('divModifyCategory').contains(theEvent.relatedTarget)) 

   { 

    //如果是子元素 

    return;//結束函式 

   } 

  if (browser.indexOf("MSIE")>0) 

   //如果是IE 

   if (document.getElementById('divModifyCategory').contains(event.toElement)) 

    return;  //結束函式 

//要執行的操作 隐藏或者是删除标簽 

var divModifyCategory = document.getElementById("divModifyCategory"); 

if (divModifyCategory) 

  window.document.body.removeChild(divModifyCategory); 

四、為自建立的标簽增加響應事件 

addEvent(divModifyCategory, 'mouseout', function(){HideMyCategory(arguments[0]);});

繼續閱讀