禁用文本框。window.event.clientX & clientY的意外值。

问题描述 投票:1回答:1

我有一些鼠标跟踪代码,在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>
javascript internet-explorer-8 dom-events internet-explorer-7
1个回答
1
投票

一个简单但不满意的解释是,这是一个bug。

Jason Brunette提供了一个类似的例子 www.excel.net 他在那里这样描述道:...... "虫中之虫"。

... "错误中的错误"。鼠标事件不应该在被禁用的元素上发生......。

类似的错误可以在使用 偏移量X. 扬-沃尔特在2010年8月对后者有这样的评价。unixpapa.com

理论上,event.offsetX和event.offsetY的值应该包含这些内容,但算了吧。这些值有很多bug和不兼容的地方,基本上完全没有用处。

他继续建议使用以下的组合 偏左 和可能的多重 抵消父母 以获得同样的效果。

© www.soinside.com 2019 - 2024. All rights reserved.