Ответ 1
Вы можете вычесть .scrollTop()
window
из страницыY, чтобы получить позицию в окне, например:
var top = e.pageY - $(window).scrollTop();
Я пытаюсь получить точную позицию мыши относительно окна.
Вот моя проблема...
document.height
= 1600 (фактический размер документа)window.height
= 400 (доступно для просмотра)Мне нужно выяснить положение мыши относительно окна, а не документ, который предоставляет атрибут pageY.
Это для большой всплывающей подсказки, которая появляется в mouesover для элемента таблицы. Если в нижней части экрана недостаточно места (окно максимально), то всплывающая подсказка отображается над указателем, в противном случае - под указателем. Это отлично работает до тех пор, пока размер документа больше, чем размер страницы (длинная таблица).
Спасибо, Люк
Вы можете вычесть .scrollTop()
window
из страницыY, чтобы получить позицию в окне, например:
var top = e.pageY - $(window).scrollTop();
А как насчет window.pageYOffset?
Демо:
<html>
<head>
<style>
html,body {padding:0;margin:0}
#content {height:2048px;background-color:#ccc;}
#status {position:fixed;top:0;left:0;}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
$(document).mousemove(function(e){
$('#status').html(e.pageX +', '+ (e.pageY - window.pageYOffset));
});
})
</script>
<body>
<h2 id="status">0, 0</h2>
<div id="content"></div>
</body>
</html>
Как насчет атрибута document.body.scrollTop, он содержит прокрученные пиксели. Я полагаю, что тогда достаточно простой страницыY - scrollTop?
function showCoords(evt){
alert(
"clientX value: " + evt.clientX + "\n"
+ "clientY value: " + evt.clientY + "\n"
);
}
Я думаю, что это то, что вы ищете. Подробнее см. от разработчика Mozilla.