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

最佳答案

您不应该支持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用于委派,在大多数情况下,它比直接绑定更可取。

关于javascript - 在IE8及更高版本中如何处理mousemove?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12302573/

10-09 03:52