Javascript滚动,XHTML Doctype,IE6 - IE8和冠状动脉

时间:2010-04-28 13:43:47

标签: javascript internet-explorer canvas doctype

我已经在这方面工作了几个小时,我无法理解。

我有一个设置,它将一些坐标数据拉入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的东西。

2 个答案:

答案 0 :(得分:0)

好的,我明白了。我是个白痴。使用'document.documentElement.scrollTop'的文档很好,我认为这意味着我应该用我当前使用的元素替换'documentElement'。实际上你应该使用document.documentElement.scrollTop来获取值。

答案 1 :(得分:0)

我遇到了同样的问题。这是原帖后一年,所以希望这是一个有用的附录。

使用scrollTop可能“记录良好”,但我发现虽然IE8没有我正在使用的window.pageYOffset的值,但它适用于Firefox,Opera,Safari和Chrome ......

并且“记录良好”的修补程序目前无法在Chrome或Safari中使用。