2010-04-28 37 views
1

我一直在這工作幾個小時,我無法弄清楚。Javascript滾動,XHTML Doctype,IE6 - IE8和冠狀動脈

我有一個設置將一些座標數據轉換爲javascript,並將其解析爲交互式地圖(對於IE6用戶使用畫布{和excanvas})。除了一個問題,一切都工作正常:在向下滾動頁面時在地圖上懸停時,懸停按滾動量關閉。

這是代碼爲-是:

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">

警報()是我碰到試圖得到它的工作測試。我知道Firefox使用window.pageYOffset,但我需要一些與IE6 + IE7 + IE8兼容的東西。

+0

你的意思是「推論」嗎? – 2010-04-28 13:54:31

+0

對不起,我試圖變得有趣:( – 2010-04-28 14:32:58

+0

哦!對不起。我失敗了。:) – 2010-04-28 15:32:54

回答

0

好的,我明白了。我當時是個白癡。它使用'document.documentElement.scrollTop'的記錄相當好,我認爲我應該用我當前使用的元素替換'documentElement'。實際上,你應該使用document.documentElement.scrollTop來獲取值。

0

我有同樣的問題。這是原來的職位後的一年,所以希望這是一個有用的附錄。

它可能是「有據可查」使用scrollTop,但我發現雖然IE8沒有window.pageYOffset我正在使用的值,它適用於Firefox,Opera,Safari和Chrome ...

和「有據可查的」修復程序在Chrome或Safari中無法正常工作。

+0

我修改了jQuery使用的原始代碼,因爲它規範化了所有這些訪問器 - 非常容易! – 2011-06-15 17:23:44