Javascript滚动、XHTML Doctype、IE6-IE8和

Javascript滚动、XHTML Doctype、IE6-IE8和,javascript,internet-explorer,canvas,doctype,Javascript,Internet Explorer,Canvas,Doctype,我已经在这上面工作了好几个小时了,我想不出来 我有一个设置,它将一些坐标数据拉入javascript,并在浏览器上为用户使用canvas{and excanvas for IE6 users}将其解析为交互式地图。除了一个问题外,一切都正常:当在向下滚动页面后在地图上悬停时,悬停将被关闭 代码如下: function getOffset(evt) { var obj = document.getElementById("myCanvas"); setPageTopLeft(doc

我已经在这上面工作了好几个小时了,我想不出来

我有一个设置,它将一些坐标数据拉入javascript,并在浏览器上为用户使用canvas{and excanvas for IE6 users}将其解析为交互式地图。除了一个问题外,一切都正常:当在向下滚动页面后在地图上悬停时,悬停将被关闭

代码如下:

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:


警报是我为使其工作而运行的测试。我知道firefox可以使用window.pageYOffset,但我需要一些可以使用IE6+IE7+IE8的工具。

好的,我知道了。我是个白痴。使用“document.documentElement.scrollTop”的文档记录相当充分,我认为这意味着我应该用我当前使用的元素替换“documentElement”。实际上,您应该使用document.documentElement.scrollTop来获取值。

我也遇到了同样的问题。这是一年后,原来的职位,所以希望这是一个有用的补遗

使用scrollTop可能有很好的文档记录,但我发现虽然IE8没有我使用的window.pageYOffset的值,但它可以在Firefox、Opera、Safari和Chrome中工作


而且“记录良好”的修复程序在Chrome或Safari中不起作用。。。此时。

你是说必然结果吗?对不起,我想说的很好笑:我修改了原始代码,以便与jQuery一起使用,因为它规范化了所有这些访问器-更容易!