【问题标题】:ASP.NET: Timer and scroll positionASP.NET:计时器和滚动位置
【发布时间】:2010-10-12 08:59:56
【问题描述】:

在更新面板中有一个计时器。它不断刷新(大约每 2.5 秒)。如果它在滚动时刷新,它将滚动位置设置回部分更新之前的位置:(

我使用的是 ASP.NET 3.5,MaintainScrollPositionOnPostback 设置为 false(即使设置为 true 行为也不会改变)。

不知道为什么会这样,但是可用性很烦人......

亲切的问候, 萨沙

【问题讨论】:

    标签: asp.net ajax


    【解决方案1】:

    我们遇到了类似的问题,异步回发会将用户重置到非常长的页面顶部。我们在找到以下代码后解决了它:http://forums.asp.net/t/1047815.aspx

    我们在页面上页面上的 ScriptManager 之后插入了以下 javascript。

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    
    <script type="text/javascript">
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_beginRequest(beginRequest);
    
        function beginRequest() {
            prm._scrollPosition = null;
        }
    </script>
    

    这使得回发不会在回发返回时重置用户滚动位置。

    我不确定这是否正是您遇到的问题。您还可以查看这篇文章:Reset scroll position after Async postback - ASP.NET,其中讨论了在回发发生后设置滚动位置的更可靠的方法。

    【讨论】:

    • 遇到错误 Sys.Webforms 未定义。但是在您发布的链接上,还有另一个 sn-p,(编写您自己的空 scrollTo 函数)。那成功了。必须调查为什么我在您的示例中出现错误...
    • 可能是以下之一: 1. Javascript 出现在 ScriptManager bit.ly/8askn 之前 2. 未为 AJAX 设置 Web.Config。 bit.ly/ktZK2 3. EnablePartialRendering 需要在您的 ScriptManager 上设置为 true。 bit.ly/14Gsj 最有可能的罪魁祸首是#3。
    • 罪魁祸首是 (1)。尝试过,然后阅读您的帖子。谢谢。
    • @sgriffinusa,非常感谢您挽救了我的一天。
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2023-03-29
    • 2011-10-03
    • 2011-07-17
    • 1970-01-01
    • 2010-10-11
    • 2015-03-07
    相关资源
    最近更新 更多