http://www.quirksmode.org/dom/events/mousemove.html在IE8上处理了文件而不是窗口的mousemove事件,但我目前有:
try
{
document.onmousemove = drag.on_mouse_move;
}
catch(error)
{
if (typeof document.attachEvent !== undefined)
{
document.attachEvent("onmousemove", drag.on_mouse_move);
}
}
第一个真实语句在IE8中抛出错误,最后一个语句也是如此。后一种错误声称类型不匹配;前一个错误抛出“未实现。”
我怎样才能/应该在IE8(/ 7/6)中注册mousemove事件监听器?
答案 0 :(得分:4)
你不应该支持IE6,即使MS放弃了浏览器,感谢上帝。我刚刚在IE8中尝试了以下代码:
if (document.attachEvent)
{
document.attachEvent('onmousemove',function(e)
{
e = e || window.event;
alert(e.type);
});
}
它就像一个魅力。只是一个提示:正常 try-catch序列将是:
try
{//FF, webkit, opera, IE>8
document.addEventListener('mousemove',function(){},false);
}
catch (e)
{//IE >6 (7?)
document.attachEvent('onmousemove',function(){});
}
finally
{//browsers that must die
try
{
document.onmousemove = function(){};
}
catch(die)
{
alert('Use a decent browser.');
location.href = 'http://www.mozilla.org/en-US/firefox/new/';
}
}
attachEvent用于委派,在大多数情况下,它优先于直接绑定。