IE下有 onmouseenter和onmouseleave来解决。 可惜ff就没有。 我再想 , 为什么这么好的功能,为什么ff不引用呢? 还有ie中的onpropertychange ,哎,ff中都没有。。。 对比例子中引入了一段js ,来兼容FF的onmouseenter和onmouseleave. : 复制代码 代码如下:var xb = { evtHash: [], ieGetUniqueID: function(_elem) { if (_elem === window) { return 'theWindow'; } else if (_elem === document) { return 'theDocument'; } else { return _elem.uniqueID; } }, addEvent: function(_elem, _evtName, _fn, _useCapture) { if (typeof _elem.addEventListener != 'undefined') { if (_evtName == 'mouseenter') { _elem.addEventListener('mouseover', xb.mouseEnter(_fn), _useCapture); } else if (_evtName == 'mouseleave') { _elem.addEventListener('mouseout', xb.mouseEnter(_fn), _useCapture); } else { _elem.addEventListener(_evtName, _fn, _useCapture); } } else if (typeof _elem.attachEvent != 'undefined') { var key = '{FNKEY::obj_' + xb.ieGetUniqueID(_elem) + '::evt_' + _evtName + '::fn_' + _fn + '}'; var f = xb.evtHash[key]; if (typeof f != 'undefined') { return; } f = function() { _fn.call(_elem); }; xb.evtHash[key] = f; _elem.attachEvent('on' + _evtName, f); // attach unload event to the window to clean up possibly IE memory leaks window.attachEvent('onunload', function() { _elem.detachEvent('on' + _evtName, f); }); key = null; //f = null; /* DON'T null this out, or we won't be able to detach it */ } else { _elem['on' + _evtName] = _fn; } }, removeEvent: function(_elem, _evtName, _fn, _useCapture) { if (typeof _elem.removeEventListener != 'undefined') { _elem.removeEventListener(_evtName, _fn, _useCapture); } else if (typeof _elem.detachEvent != 'undefined') { var key = '{FNKEY::obj_' + xb.ieGetUniqueID(_elem) + '::evt' + _evtName + '::fn_' + _fn + '}'; var f = xb.evtHash[key]; if (typeof f != 'undefined') { _elem.detachEvent('on' + _evtName, f); delete xb.evtHash[key]; } key = null; //f = null; /* DON'T null this out, or we won't be able to detach it */ } }, mouseEnter: function(_pFn) { return function(_evt) { var relTarget = _evt.relatedTarget; if (this == relTarget || xb.isAChildOf(this, relTarget)) { return; } _pFn.call(this, _evt); } }, isAChildOf: function(_parent, _child) { if (_parent == _child) { return false }; while (_child && _child != _parent) { _child = _child.parentNode; } return _child == _parent; } }; 本篇文章来源于 cssrain.cn 原文链接:http://www.cssrain.cn/article.asp?id=952
推荐阅读
图片自动缩小 点击放大
如果不支持网页对话框就再新窗口打开 目的: 图片自动缩小 点击放大 输入: 无 返回: 无 function $(obj){ return document.getElementById(obj); } function ResizeImage(objImage,maxWidth) { try{ >>>详细阅读
本文标题:javascript 兼容FF的onmouseenter和onmouseleave的代码
地址:http://www.17bianji.com/kaifa2/JS/29549.html
1/2 1