如何使用JavaScript在IE 6 7 8 9中分离事件

Ion*_*ian 5 javascript bookmarklet javascript-events

这是部分代码,而不是完整版.

我有一个突出显示特定html元素的荧光笔mouse hovers.

我也有click event and listener.

我的问题是:highlighter event/listener使用Internet Explorerv6 v7 v8 v9 时不会分离

我究竟做错了什么?

这是我如何附加事件并启动事件监听器:

if (document.body.addEventListener) {
                        //alert(11);
                        document.body.addEventListener('mousemove', handler, false);
                    } else if (document.body.attachEvent) {
                        //alert(12);
                        var ff=function(e) {
                            return handler(e || window.event);
                        };
                        //alert(ff);
                        document.body.attachEvent('onmousemove', ff);
                    } else {
                        //alert(13);
                        document.body.onmousemove = handler;
                    }
Run Code Online (Sandbox Code Playgroud)

这就是我停止onmousemove/mouse事件/监听器的方法:

if (document.body.removeEventListener) {
                    document.body.removeEventListener('mousemove', handler, false);
                } else if (document.body.detachEvent) {
                    document.body.detachEvent('onmousemove', function(e) {
                        return handler(e || window.event);
                    });
                } else {
                    document.body.removeAttribute("onmousemove");
                }
Run Code Online (Sandbox Code Playgroud)

这就是我停止onclick/click事件/监听器的方式:

if (document.body.removeEventListener) {
                    document.body.removeEventListener('click', ClosetAffairHighlighter.highlightClick, false);
                } else if (document.body.detachEvent) {
                    document.body.detachEvent('onclick', ClosetAffairHighlighter.highlightClick);
                } else {
                    document.body.removeAttribute("onclick");
                }
Run Code Online (Sandbox Code Playgroud)

Chr*_* Li 13

基于本文,跨浏览器事件处理程序可以是:

var EventUtil = {
    addHandler: function(element, type, handler) {
        if (element.addEventListener) {
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent) {
            element.attachEvent("on" + type, handler);
        } else {
            element["on" + type] = handler;
        }
    },
    removeHandler: function(element, type, handler) {
        if (element.removeEventListener) {
            element.removeEventListener(type, handler, false);
        } else if (element.detachEvent) {
            element.detachEvent("on" + type, handler);
        } else {
            element["on" + type] = null;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)