我已经在这方面工作了几个小时,我无法理解。
我有一个设置,它将一些坐标数据拉入javascript并在浏览器中为用户解析为交互式地图(使用canvas {和excanvas for 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:<!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的东西。
答案 0 :(得分:0)
好的,我明白了。我是个白痴。使用'document.documentElement.scrollTop'的文档很好,我认为这意味着我应该用我当前使用的元素替换'documentElement'。实际上你应该使用document.documentElement.scrollTop来获取值。
答案 1 :(得分:0)
我遇到了同样的问题。这是原帖后一年,所以希望这是一个有用的附录。
使用scrollTop可能“记录良好”,但我发现虽然IE8没有我正在使用的window.pageYOffset的值,但它适用于Firefox,Opera,Safari和Chrome ......
并且“记录良好”的修补程序目前无法在Chrome或Safari中使用。