如何使用JavaScript分离IE 6 7 8 9中的事件
这是部分代码,不是完整版本 我有一个高亮灯,当鼠标悬停时,高亮显示特定的html元素 我还有一个如何使用JavaScript分离IE 6 7 8 9中的事件,javascript,javascript-events,bookmarklet,Javascript,Javascript Events,Bookmarklet,这是部分代码,不是完整版本 我有一个高亮灯,当鼠标悬停时,高亮显示特定的html元素 我还有一个单击事件和侦听器 我的问题是:使用Internet Explorer时,highlighter事件/侦听器没有分离 我做错了什么 以下是我附加事件并启动事件侦听器的方式: if (document.body.addEventListener) { //alert(11); document.body.add
单击事件和侦听器
我的问题是:使用Internet Explorer时,highlighter事件/侦听器
没有分离
我做错了什么
以下是我附加事件并启动事件侦听器的方式:
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;
}
这就是我如何停止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");
}
这就是停止onclick/click事件/侦听器的方法:
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;
}
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");
}
您需要将随
attachEvent
添加的函数传递到detachEvent
。在您的代码中,您正在传递一个新的(它们具有相同的toString()
,并将执行相同的操作,但它们不相同)
您应该使用
var ff;
if (document.body.addEventListener) {
document.body.addEventListener('mousemove', handler, false);
} else if (document.body.attachEvent) {
ff=function(e) {
return handler(e || window.event);
};
然后打电话
else if (document.body.detachEvent) {
document.body.detachEvent('onmousemove', ff);
}
删除旧IE中的侦听器
注意:我真的对document.body.removeAttribute(“onclick”)表示怀疑代码>:这是否真的有用?基于此,跨浏览器事件处理程序可以是:
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;
}
}
};
我要试试这个。。。10xRats,此NCZ链接不再处于活动状态,是否有可供参考的其他文章或链接?@Danjah感谢提醒,此要点:是代码的存储库。