FF几个常用方法,兼容

来源:互联网 发布:图像增强算法综述 编辑:程序博客网 时间:2024/04/29 09:58

<input id="wc" onclick="alert(window.event.srcElement.id)" type="button" value="查看" />
<script type="text/javascript">
(function (bool) {
//兼容FF一些方法
    var html;
   
    if (bool) {
   
        html = window.HTMLElement.prototype;
       
        window.__defineGetter__("event", function () {
        //兼容Event对象
            var o = arguments.callee;
            do {
                if (o.arguments[0] instanceof Event) return o.arguments[0];
            } while (o = o.caller);
            return null;
        });
       
        Event.prototype.__defineGetter__("srcElement", function () {
        //兼容Event.srcElement对象
            var n = this.target;
            while (n.nodeType != 1) n = n.parentNode;
            return n;
        });
       
        html.__defineSetter__("className", function (t_val) {
        //兼容className属性(高版本FF已经兼容了)
            return this.setAttribute("class") = t_val;
        });
       
        html.__defineGetter__("className", function () {
        //兼容className属性(高版本FF已经兼容了)
            return this.getAttribute("class");
        });
       
    }

})(/Firefox/.test(window.navigator.userAgent));

Object.extend = function (a, b) {
//追加方法
    for (var i in b) a[i] = b[i];
    return a;
};

Object.extend(Object, {

    addEvent : function (a, b, c, d) {
    //添加函数
        var $ni, $nf;
       
        if (b.constructor != Array) { $ni = $nf = b; }
        else { $ni = b[0], $nf = b[1]; }
       
        if (a.attachEvent) a.attachEvent($ni, c);
        else a.addEventListener($nf.replace(/^on/, ""), c, d || false);
        return c;
    },
   
    delEvent : function (a, b, c, d) {
    //删除函数
        var $ni, $nf;
       
        if (b.constructor != Array) { $ni = $nf = b; }
        else { $ni = b[0], $nf = b[1]; }
       
        if (a.detachEvent) a.detachEvent($ni, c);
        else a.removeEventListener($nf.replace(/^on/, ""), c, d || false);
        return c;
    }
   
});

</script>