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]);});