繁体   English   中英

浏览器的后退按钮在 ASP.NET 应用程序中随机禁用

[英]Browser's back button disables randomly in ASP.NET application

在我的两页 web 应用程序中,用户逐步输入信息并在第一页进行选择。 完成后,他们单击导航到第二页的“生成”按钮。 用户打印该页面并点击浏览器的后退箭头以返回到第一页,并且选择完好无损。

在生成了几个页面(2 或 3 个)之后,单击Back只会禁用图标而不返回。 他们必须手动重新访问第一页,重新输入他们的信息和选择。

我发现显示当前历史记录的后退/前进箭头 (IE8) 右侧的向下箭头通常包括所有“上一个”页面。 但是当点击后退按钮即将禁用时,历史记录只显示当前站点。

哪些事件、脚本、标题等清除了当前站点的历史记录? 它出现在 WinXP 和 Win7 上的 IE7 和 IE8 中。 在 FireFox 中,按钮没有禁用,但它也没有做任何事情。 用户报告它是最近的,我一直在对应用程序进行更改,但它只影响第二页上的 HTML(虽然不是脚本)。 如果它是最近的,可能是代码问题,但我不确定在仔细检查我最近的更改时要寻找什么。

哪个版本的IE?

在内部,IE 在旅行日志(又名后退/前进堆栈)中维护有限数量的数据。 ASP.NET 带有巨大回发的页面 forms 经常打破这个限制,抹去历史堆栈。

在 IE6 和 IE7 中,如果有一个值超过 523,659 个字符的表单输入字段,当您离开页面时,IE 可能会清除当前会话的旅行日志(类似于历史记录),禁用后退和前进按钮。

我相信整体 Travellog 的大小限制在 IE8 中有所提高,但不会超过几兆字节。

作为一般规则,如果您希望您的用户在页面之间来回导航,我会在页面上为他们提供完成这项工作的链接(不使用javascript:back() )而不是使用浏览器的导航。

最有可能的情况是,单个页面的回发有时被视为页面,有时则不是。 如果用户操作加载具有相同 URI 和查询字符串的页面,大多数浏览器会认为“相同的页面”,即使一切都可能发生了变化。 这通常是由于多视图的大量使用,当前视图的信息保存在 ViewState 或 Session 中; 在该页面内导航不会更改导航到的 URI,因此浏览器不会将每个新加载记录为唯一的。

如果您确实需要适当的来回功能,则需要确保每个链接都会导致浏览器被告知导航到与当前页面不同的 URI。 您可以通过添加一个查询字符串元素来做到这一点,该元素将出现在指向不同页面或视图的每个链接中,该元素将随着用户每次单击而自动递增。 这每次都会为浏览器提供不同的 URI。 您只使用现有的 QueryString 元素在链接的 URI 上创建新元素。 这可能会变得很麻烦,更简单的解决方案是提供页面内导航并告诉您的用户不要再点击“返回”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM