5

我试图防止在我的 ASP.NET 页面上发生的“闪烁”效果,当用户在离开页面后通过浏览器后退按钮导航到页面时会发生这种情况。闪烁的原因是我正在使用一个更新面板,它在初始页面加载时有一些内容。因此,当页面通过后退按钮加载时,初始内容会在使用正确的历史感知数据更新之前非常短暂地显示。

为了克服这个问题,我打算在初始页面加载时隐藏更新面板(显示:无),然后只要我们没有任何要处理的历史记录就显示它。问题是我找不到要检查的内容以确定是否有任何历史记录。我可以看到 Sys.Application 有一个 _history 成员,但是当我在页面 init 上检查它时,它每次都是空的。

有谁知道我应该检查什么以确定页面加载客户端是否需要处理历史记录?在什么时候做呢?

4

3 回答 3

1

浏览器的后退按钮及其提供的功能完全独立于您网页的内容。

您可以做的一件事是在进行 AJAX 更新时设置您的位置哈希。当您加载页面时,您可能能够检测到这一点。我没试过。您应该能够解析出服务器端 url 的 # 部分,并查看您在 AJAX 历史中的位置。

location.hash = 'foo';
于 2010-05-25T07:55:21.770 回答
0

感谢您的回复丹尼尔。现在我的更新面板周围有一个 div,它的 display 属性设置为 none。在 Sys.Application 的 init 事件中,我正在检查 window.location.hash 值以确定页面加载是否是浏览器后退/前进按钮单击的结果。如果不是,那么我将显示属性设置为阻止,如果不是,我暂时将其保留为“显示:无”。

在由于单击后退按钮而调用的 ScriptManager Navigate 事件处理程序的服务器端,我正在注册一个客户端脚本块,它将显示属性设置为块。

我做了一些测试,似乎工作正常,我不再得到闪烁。我更愿意使用 MS AJAX 客户端对象之一来检查历史记录,但我们已经做到了。

于 2010-05-25T10:15:40.487 回答
0

在页面中放置一个隐藏的输入,其值为空白,然后在页面加载时设置其值。您会发现,当使用后退按钮时,页面加载脚本会发现该值仍然设置,您可以做出相应的响应。这利用了在页面加载之间保留表单内容的浏览器功能。

于 2010-09-10T05:09:41.673 回答