javascript 兼容FF的onmouseenter和onmouseleave
<script> 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; } }; </script>
相关推荐
nmgxzm00 2020-11-10
ifconfig 2020-10-14
hhanbj 2020-11-17
zfszhangyuan 2020-11-16
古叶峰 2020-11-16
一个智障 2020-11-15
jipengx 2020-11-12
81427005 2020-11-11
xixixi 2020-11-11
游走的豚鼠君 2020-11-10
苗疆三刀的随手记 2020-11-10
Web卓不凡 2020-11-03
小飞侠V 2020-11-02
帕尼尼 2020-10-30
爱读书的旅行者 2020-10-26
帕尼尼 2020-10-23
杏仁技术站 2020-10-23
淼寒儿 2020-10-22