1

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

4

1 回答 1

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

于 2012-09-06T14:52:00.507 回答