How to detach event in IE 6 7 8 9 using JavaScript

bookmarklet, dom-events, javascript

Solution

base on this article, a cross-browser event handler can be :

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;
        }
    }
};

Problem

This is a partial code, not the full version. I have a highlighter that highlights a specific html element when the mouse hovers. I also have a click event and listener. My problem is : the highlighter event/listener does not detach when using Internet Explorer v6 v7 v8 v9 What am I doing wrong? This is how I attach the event and start the event listener: ``` 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; } ``` This is how I stop the `onmousemove`/`mouse` event/listener : ``` 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"); } ``` This is how I stop the `onclick`/`click` event/listener: ``` 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"); } ```

Original source