专家,
滚动div / panel时遇到问题。我开发了一个ASPX应用程序,在面板中显示一些消息。该面板是更新面板控件的子代。在其中,有一个计时器,它每秒更新一次消息显示并将面板滚动到底部。 在代码中抓住一个loog:
<asp:UpdatePanel ID="udpnlMessages" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<script type="text/javascript">
function scrollPanelToBottom() {
$('#<%=pnlMessagesOverview.ClientID %>').scrollTop($('#<%=pnlMessagesOverview.ClientID %>')[0].scrollHeight);
}
</script>
<asp:Timer runat="server" Interval="1000" ID="tmrCheckNewMessages" Enabled="True" OnTick="TmrCheckNewMessagesOnTick"></asp:Timer>
<asp:Panel runat="server" ID="pnlMessagesOverview" CssClass="messageScrollPanel">
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
JS函数在我面板的prerender处理程序中注册。
/// <summary>
/// pre render handler
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
protected void PnlMessagesOverviewOnPreRender(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(
this.pnlMessagesOverview,
this.pnlMessagesOverview.GetType(),
"scrollPanelToBottom",
"scrollPanelToBottom();",
true);
}
到目前为止,工作正常。问题是:如果用户向上滚动,因为他正在阅读一些较旧的消息,这个JS会每秒将他踢到面板的底部。如果用户手动滚动,我必须阻止自动滚动。
并且:我不知道如何实现它。我尝试了一些JS滚动处理程序..但我找不到符合我想要的行为的解决方案...... :(
那里有谁可以帮助我?