2011-09-07 40 views
3

我正在測試一些Jquery Ajax腳本,其中一個腳本其實很不錯。我唯一遇到的問題是,當它刷新我的div時,它會將您帶回到div的頂部。如何阻止腳本返回頁面頂部?

div從外部php腳本加載MYSQL結果。所以,如果用戶在閱讀頁面的一半時,當ajax調用熄滅時,它會將它們帶到div的頂部。

他們能夠不間斷閱讀是很重要的。

這裏是我的代碼:

<script> 
var auto_refresh = setInterval(
function() 
{ 
$('#test').fadeOut("slow").load('tehloader2.php?load=tester').fadeIn("slow"); 
}, 20000); 
</script> 

<br /><br /> 
<div id="test"></div> 

因此,纔有可能以剛剛通過修改代碼的煙囪效應,或者我需要看一個完全不同的選項?

另外我想指出的是,經過這麼久,這個腳本開始失敗。它達到了不斷刷新div的程度。沒有20秒等待,只是一次又一次。

+0

你有沒有嘗試只加載它,而不會淡出它,然後呢? – Nathan

+0

這個我幫你:http://stackoverflow.com/questions/209861/setting-html-page-vertical-position-with-javascript –

回答

2

這應該從去頂端停止:

<script> 
var auto_refresh = setInterval(
function() 
{ 
$('#test').load('tehloader2.php?load=tester'); 
}, 20000); 
</script> 

<br /><br /> 
<div id="test"></div> 

這將使得它只是加載,而不是出衰落元素,然後回到

我希望這有助於。

+0

這很好。我相信衰落是問題,無論是最終失敗還是用戶回到頂端的方式。非常感謝你。 – Brad45

+0

@ Brad45不客氣! :) – Nathan

1

您可以使用jQuery的.scrollTop().scrollLeft()在加載內容之前保存滾動位置,然後在加載內容後將滾動位置設置回這些值。如果內容在閱讀位置之上發生了顯着變化,則不一定會返回到完全相同的位置,但是如果內容沒有顯着改變,或者如果改變的位置低於正在觀看的位置,它應該恢復回到完全相同的位置。

一個更復雜的方法將涉及識別標記對象是在屏幕上可見,並且使用jQuery .offset()position(),您將獲得在屏幕中的物體位置,然後加載新的內容後,你調整滾動位置,直到該標記物再次定位在同一個地方。這種方法有很多工作要做,但如果內容發生顯着變化,會給出更好的結果。

1

效果發生的原因是內容加載時,div可能會被重新創建,這會使瀏覽器進入div的頂部。 您可以保存滾動位置,然後嘗試恢復。

但是這取決於你在做什麼,如果你加載新的內容可能會是有益的內容加載到另一個隱藏div,然後使用ü希望的效果追加新的內容可見div

希望它有幫助。