1

我有一些鼠标跟踪代码在IE中无法正常工作,基本归结为下面的HTML。我已经在IE7和IE8中试过了。已禁用的文本框:window.event.clientX&clientY的意外值

意想不到的部分是,当您将鼠标放在禁用文本框中的文本上时,window.event.clientX和clientY的值似乎是相对于该文本而不是整个窗口。

任何人都可以解释为什么在这种情况下,值应该是相对于文本而不是整个窗口?

我想我可能会找到解决方法,但它真的让我感到惊讶。

<html> 
<body> 
    window.event.clientX: <br /> 
    <input type="text" id="foo"> 
    <input type="text" value="mouse over me" disabled /> 
</body> 

<script> 
    function trackMouse() { 
     document.getElementById('foo').value = window.event.clientX; 
    } 
    document.onmousemove = trackMouse; 
</script> 

</html> 

回答

0

一个简单但不令人满意的解释是它是一个错误。

杰森褐发提供了一个类似的例子www.excel.net他形容这样的:

...“的错误中的错误”。使用OFFSETX当鼠标事件应该不会触发对禁用的元素...

类似的错误就可以看出。扬沃尔特过这种关于2010年8月,后者说,在unixpapa.com

从理论上讲,event.offsetX和event.offsetY值都应该包含这一点,但忘记它。这些值中存在许多错误和不兼容性,以致它们基本上完全无用。

他接着建议使用offsetLeft以及可能有多个offsetParents的组合来达到同样的效果。