2011-06-22 115 views
1

我正在寫asp.net c#代碼。在PostBack上設置滾動位置

我想控制回帖上的頁面位置。 MaintainScrollPositionOnPostback等於true或false,是我想要的。真的太低,假太高。另一個問題是,根據哪個控制按下,位置應該不同。第三個問題是MaintainScrollPositionOnPostback = true在I.E中起作用。但不是在Firefox中。

我想要的類似於href相關標籤例如<a href="#body2">除了代碼。

感謝您的任何建議。

回答

3

假設你能夠使用jQuery,請嘗試以下操作:

http://abeautifulsite.net/blog/2010/01/smoothly-scroll-to-an-element-without-a-jquery-plugin/

只需將腳本並傳遞解僱你的回發事件的控件的ID。

如果你不能使用jquery出於某種原因,這裏是一個不太雅緻的方法:

http://clifgriffin.com/2008/10/14/using-javascript-to-scroll-to-a-specific-elementobject/

編輯(樣品):

下面是使用jQuery直HTML的例子方法,假定您在與html頁面相同的文件夾中有一個名爲jquery.js的腳本文件。

<html> 
<head> 
    <script type='text/javascript' src='jquery.js'></script> 
    <script type='text/javascript'> 
    $(document).ready(function() { 
     $('html,body').animate({ 
      scrollTop: $('#scrollHere').offset().top 
      }, 0//increase for smooth, visible scroll 
     ); 
    }); 
    </script> 
</head> 
<body> 

<div style='width:100px; height:1000px; background-color:red;'> 
top filler 
</div> 

<a id='scrollHere' href='#'>Scrolls to this element</a> 

<div style="width:100px; height:1000px; background-color:blue;"> 
bottom filler 
</div> 

</body> 
</html> 

這裏是你可以通過任何可見的頁面控制的「客戶端ID」屬性,它將寄存器的JavaScript滾動到在頁加載的元件的客戶端的方法的示例(假設jQuery是註冊在頁面上,只註冊每個請求一個呼叫):

private void ScrollToControl(string controlId) 
{ 
    //scroll to button 
    string script = 
     "$(document).ready(function() {" + 
      "$('html,body').animate({ " + 
       "scrollTop: $('#" + controlId + "').offset().top " + 
      "}, 0);" + 
     "});"; 

    if (!Page.ClientScript.IsStartupScriptRegistered("ScrollToElement")) 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "ScrollToElement", script, true); 
} 
+0

+1 - 只需使用jQuery( - : – Murph

+0

jQuery是好,但我無法弄清楚如何使用這個,你能不能給我更多。詳細信息。一個工作的例子會很好。 –

+0

感謝您的示例。我嘗試了您所說的,選項2.我將該調用放在按鈕的單擊事件中。我得到此錯誤「Microsoft JScript運行時錯誤:'offset() .top'爲空或不是對象「 –

0

如果你知道你想要你的窗口是那麼你可以嘗試使用JavaScript中window.scrollTo()函數,具體的像素值。

window.scrollTo(0,0); 
0

維持通過點擊按鈕頁面滾動位置:

$("#Next").click(function() { $('html,body').animate(
{ scrollTop: $('.required').offset().top 
}, 0//increase for smooth, visible scroll); });