Я работаю над этим часами и не могу понять.
У меня есть настройка, которая извлекает некоторые координатные данные в javascript и анализирует их в интерактивной карте (используя холст {и excanvas для пользователей IE6}) в браузере для пользователя. Все работает нормально кроме одной проблемы: при наведении на карту после прокрутки страницы вниз наведение отключается на величину прокрутки.
Это код как есть:
function getOffset(evt) {
var obj = document.getElementById("myCanvas");
setPageTopLeft(document.getElementById("myCanvas"));
return [(evt.clientX - obj.pageLeft), (evt.clientY - obj.pageTop)];
}
function setPageTopLeft(o) {
var top = 0, left = 0, obj = o;
alert('scrollTop w/ getElementById: ' + document.getElementById("myCanvas").scrollTop + ' scrollTop w/ .body.:' + document.body.scrollTop + ' window.pageYOffset: ' + window.pageYOffset);
top = document.getElementById("myCanvas").scrollTop;
left = document.getElementById("myCanvas").scrollLeft;
while (o.offsetParent) {
left += o.offsetLeft;
top += o.offsetTop;
o = o.offsetParent;
};
obj.pageTop = top;
obj.pageLeft = left;
}
Использование типа документа: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
alert() — это тесты, которые я запускал, пытаясь заставить его работать. Я знаю, что firefox работает с window.pageYOffset, но мне нужно что-то, что работает с IE6 + IE7 + IE8.