javascript 兼容FF的onmouseenter和onmouseleave的代码


Posted in Javascript onJuly 19, 2008

javascript 兼容FF的onmouseenter和onmouseleave的代码
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
Javascript 相关文章推荐
比较简单的一个符合web标准的JS调用flash方法
Nov 29 Javascript
js函数般调用正则
Apr 08 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
浅谈javascript中return语句
Jul 15 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
Dec 14 Javascript
Windows下Node.js安装及环境配置方法
Sep 18 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
Dec 01 Javascript
electron实现qq快捷登录的方法示例
Oct 22 Javascript
js实现自动播放匀速轮播图
Feb 06 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
Mar 31 Javascript
javascript实现贪吃蛇小游戏
Jul 28 Javascript
javascript 获取网页参数系统
Jul 19 #Javascript
javascript import css实例代码
Jul 18 #Javascript
番茄的表单验证类代码修改版
Jul 18 #Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
Jul 17 #Javascript
js 新浪的一个图片播放图片轮换效果代码
Jul 15 #Javascript
纯js实现的论坛常用的运行代码的效果
Jul 15 #Javascript
点图片上一页下一页翻页效果
Jul 09 #Javascript
You might like
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
在js中使用"with"语句中跨frame的变量引用问题
2007/03/08 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
Python递归函数实例讲解
2019/02/27 Python
python开启debug模式的方法
2019/06/27 Python
python with语句的原理与用法详解
2020/03/30 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
银行介绍信范文
2014/01/10 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
社团文化节策划书
2014/02/01 职场文书
车队司机自我鉴定
2014/03/02 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
运动会100米广播稿
2015/08/19 职场文书