Отключенное текстовое поле: неожиданные значения для window.event.clientX & clientY - PullRequest
1 голос
/ 21 января 2010

У меня есть некоторый код отслеживания мыши, который не работает должным образом в 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>

1 Ответ

0 голосов
/ 24 февраля 2011

Простое, но неудовлетворительное объяснение в том, что это ошибка.

Джейсон Брюнет предлагает аналогичный пример www.excel.net , где он описывает его так:

... "ошибка внутри ошибки". События мыши не должны запускаться на отключенных элементах ...

Аналогичная ошибка наблюдается при использовании offsetX . Ян Вольтер сказал об этом в августе 2010 года по адресу unixpapa.com

Теоретически, значения event.offsetX и event.offsetY должны содержать это, но забудьте об этом. В этих значениях столько ошибок и несовместимостей, что они практически бесполезны.

Далее он предложил использовать комбинацию offsetLeft и, возможно, нескольких offsetParents , чтобы получить тот же эффект.

...