为什么Internet Explorer与后退按钮上的预期功能不同

时间:2014-01-08 14:16:55

标签: javascript asp.net-mvc internet-explorer browser browser-cache

在我的ASP.NET MVC项目中,我们引入了Lucine Searching,(虽然在这种情况下这些细节不是必需的,只是给出一些背景知识,因为我相信我的问题与IE浏览器和缓存有关)。 / p>

在此页面中,用户可以根据关键字过滤搜索。并且用户可以单击以转到列出的项目并使用浏览器后退按钮或带有javascript代码onclick = "location.href = 'Javascript:history.go(-1);'")的手动HTML按钮返回到同一页面。

在Chrome,Firefox甚至是Internet Explorer 9中,用户都会在没有任何问题的情况下返回他离开的页面。我的意思是它保留用户输入的值。

然而,在IE 10和IE 11中,当用户点击已过滤的列表项时,它进入页面,当用户第一次点击浏览器后退按钮或HTML后退按钮时,我会返回正确的过滤页面。但是,当用户再次单击任何项​​目并执行相同的过程时,我将不会返回过滤后的值。取而代之的是所有结果,即使文本框也没有用户输入的关键字。

始终假设后退按钮用于帮助人们返回同一页面并说明他们离开的位置。我没有任何线索,为什么IE 10和11的行为不同。请你帮我弄清楚我在这里缺少什么。

2 个答案:

答案 0 :(得分:2)

在特殊情况下(由于某些内部页内动态功能,页面的url无法确定状态),我们需要为自己实现历史记录处理。

设置历史记录令牌 - 每当用户执行更改操作的操作时     以你想要保存的方式“屏幕”,你应该存储     一个令牌

  • History.newItem("someLinkTarget", false);
  • 回应历史令牌

每当网址以#someToken 结尾时,该令牌都会传递到历史记录onValueChange

ValueChangeHandler方法
public void onValueChange (ValueChangeEvent<String> event) {
String linkTarget = event.getValue();
if (checkForYourSavedToken(linkTarget)) {
... your code displays your expected results;
} else { … }

这些知识来自GWT阅读,但我没有对此进行测试。如果这对你没有帮助,请忽略。 (另请参阅w3schools,其中暗示没有适用于历史记录对象的公共标准,但所有主流浏览器都支持它。

答案 1 :(得分:1)

如果你在页面中使用ajax,那么请离开&amp;回来后,阿贾克斯国家将会失败。当您向前或向后单击时,页面不会保留在加载后所做的任何更改。

但这并非严格意义上的确如此。表格是持久的,我过去曾使用过这个技巧。

页面加载&amp;用户执行通过ajax加载的搜索。将ajax响应保存到隐藏的输入。 当用户离开页面时返回时,页面脚本检测到隐藏输入中的内容现在已经存在。对此进行处理,将以前检索到的结果显示给用户。