为什么不在IE中分离事件火灾< 9?

时间:2013-05-25 00:47:31

标签: javascript internet-explorer events

我设置了最简单的简单事件处理函数。除了IE中的events.remove()外,一切都很有效。 9.换句话说,除了删除使用.detachEvent()的IE版本中的事件之外,一切都很有效。

我一直在测试IETester和VirtualBox,用IE8运行Windows XP。

events = {
    add: (function () {
        if (document.documentElement.addEventListener) {
            return function (elm, type, func) {
                elm.addEventListener(type, func, false);
            };
        } else if (document.documentElement.attachEvent) {
            return function (elm, type, func) {
                elm.attachEvent('on' + type, function () {
                    func.call(elm, window.event);
                });
                elm = null; //clean up possible memory leaks?
            };
        }
    }()),
    remove: (function () {
        if (document.documentElement.removeEventListener) {
            return function (elm, type, func) {
                elm.removeEventListener(type, func, false);
            };
        } else if (document.documentElement.detachEvent) {
            return function (elm, type, func) {
                elm.detachEvent('on' + type, function () {
                    func.call(elm, window.event);
                });
                elm = null; //clean up possible memory leaks?
            };
        }
    }())
};

Here is a (weird) fiddle

1 个答案:

答案 0 :(得分:3)

因为你试图使用与绑定的函数不同的函数进行分离。

它们都是匿名函数并不重要。它们是两个不同的功能对象。