2010-03-30 23 views
0

我設置scrollTop和scrollLeft爲我正在使用的div。Chrome中的scrollTop有問題嗎?

的代碼看起來是這樣的:

div.scrollLeft = content.cx*scalar - parseInt(div.style.width)/2; 
div.scrollTop = content.cy*scalar - parseInt(div.style.height)/2; 

這只是正常的FF,但只有scrollLeft工作在鉻。正如你所看到的,這兩個使用幾乎相同的方程式,因爲它在FF中工作我只是想知道這是否與Chrome的問題?

更新: 如果我切換任務的順序,然後scrollTop將工作,scrollLeft不會。

<div id="container" style = "height:600px; width:600px; overflow:auto;" onscroll = "updateCenter()"> 
<script> 
    var div = document.getElementById('container'); 

    function updateCenter() 
    { 
     svfdim.cx = (div.scrollLeft + parseFloat(div.style.width)/2)/scalar; 
     svfdim.cy = (div.scrollTop + parseFloat(div.style.height)/2)/scalar; 
    } 

    function updateScroll(svfdim, scalar, div) 
    { 
     div.scrollTop = svgdim.cy*scalar - parseFloat(div.style.height)/2; 
     div.scrollLeft = svgdim.cx*scalar - parseFloat(div.style.width)/2; 
    } 

    function resizeSVG(Root) 
    { 
     Root.setAttribute("height", svfdim.height*scalar); 
     Root.setAttribute("width", svfdim.width*scalar);  
     updateScroll(svgdim, scalar, div); 
    } 
</script> 
+0

如果在修改div的屬性之前將變量中的4維存儲在變量中,會發生什麼? – Alsciende 2010-03-30 13:01:51

+0

什麼4個維度? – Shaunwithanau 2010-03-30 13:16:16

+0

你發佈的兩行看起來很好。包括html和更多你正在使用的腳本。 – lincolnk 2010-03-30 13:26:32

回答

0
<body onload="resizeSVG(Root)" background="gray"> 
<script> 
var prescrollLeft = 0; 
var prescrollTop = 0; 

function updateCenter() 
{ 
    if(div.scrollLeft != prescrollLeft) 
    { 
     svgdim.cx = (div.scrollLeft + parseFloat(div.style.width)/2)/scalar; 
    } 
    if(div.scrollTop != prescrollTop) 
    { 
    svgdim.cy = (div.scrollTop + parseFloat(div.style.height)/2)/scalar; 
    } 

    prescrollLeft = div.scrollLeft; 
    prescrollTop = div.scrollTop; 
} 

function updateScroll(svfdim, scalar, div) 
{ 
    div.scrollTop = svfdim.cy*scalar - parseFloat(div.style.height)/2; 
    div.scrollLeft = svfdim.cx*scalar - parseFloat(div.style.width)/2; 
} 

function resizeSVG(Root) 
{ 
    Root.setAttribute("height", svfdim.height*scalar); 
    Root.setAttribute("width", svfdim.width*scalar);  
    updateScroll(svfdim, scalar, div); 
} 
</script> 

<div id="container" style = "height:600px; width:600px; overflow:auto;" onscroll = "updateCenter()" > 
//some SVG 
</div> 

這個固定我的問題。問題在於,因爲我正在更改scrollLeft和scrollTop,所以onscroll會被調用兩次。最初我寫了這個意圖使用scrollTo,它將在一次調用中完成兩個滾動。我不太清楚爲什麼我現在的原始代碼在FF/Opera中工作...