如何在IE8和之前处理mousemove?

时间:2012-09-06 14:41:35

标签: javascript internet-explorer events internet-explorer-8 event-handling

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事件监听器?

1 个答案:

答案 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用于委派,在大多数情况下,它优先于直接绑定。