源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript 兼容FF的onmouseenter和onmouseleave的代码

  • 时间:2021-08-29 02:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript 兼容FF的onmouseenter和onmouseleave的代码
[url=http://www.cssrain.cn/attachments/month_0807/f2008715193530.jpg][img]http://www.cssrain.cn/attachments/month_0807/f2008715193530.jpg[/img] [/url] IE下有 onmouseenter和onmouseleave来解决。 可惜ff就没有。  我再想 , 为什么这么好的功能,为什么ff不引用呢? 还有ie中的onpropertychange  ,哎,ff中都没有。。。 对比例子中引入了一段js ,来兼容FF的onmouseenter和onmouseleave. :
[u]复制代码[/u] 代码如下:
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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部