我有一些鼠标跟踪代码,在IE中不能像预期的那样工作,基本上归结为下面的HTML。我在IE7和IE8中都试过了。
出乎意料的部分是,当你把鼠标放在禁用文本框中的文本上时,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>
一个简单但不满意的解释是,这是一个bug。
Jason Brunette提供了一个类似的例子 www.excel.net 他在那里这样描述道:...... "虫中之虫"。
... "错误中的错误"。鼠标事件不应该在被禁用的元素上发生......。
类似的错误可以在使用 偏移量X. 扬-沃尔特在2010年8月对后者有这样的评价。unixpapa.com
理论上,event.offsetX和event.offsetY的值应该包含这些内容,但算了吧。这些值有很多bug和不兼容的地方,基本上完全没有用处。
他继续建议使用以下的组合 偏左 和可能的多重 抵消父母 以获得同样的效果。