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

在我的ASP.NET MVC项目中,我们已经介绍了Lucine Searching(尽管在这种情况下,这些细节并不是必需的,只是给出了一些背景知识,因为我相信我的问题与IE浏览器和缓存有关)。

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

在Chrome,Firefox甚至是Internet Explorer 9中,用户都可以回到没有任何问题的页面。 我的意思是它保持了用户输入的价值。

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

它总是假设后退按钮在那里帮助人们回到相同的页面,并说明他们离开的地方。 我留下了任何线索,为什么IE 10和11的行为不同。 请问你们有没有人能帮我弄清楚我在这里错过了什么。


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

设置历史记号 - 每当用户采取一种以您想要保存的方式更改“屏幕”的操作时,您应该存储一个记号

  • History.newItem("someLinkTarget", false);
  • 回应历史令牌
  • 只要URL以#someToken结尾 ,该标记就会传递给History的ValueChangeHandleronValueChange方法

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

    这些知识来自GWT阅读,但我没有对它的核心进行测试。 无论如何这不会帮助你,请忽略。 (也请查找w3schools,这表明没有适用于历史对象的公共标准,但所有主流浏览器都支持它。


    如果你在页面中使用ajax,然后离开并回来,那么ajax状态将会丢失。 当您点击前进或后退时,页面不会在其加载后进行任何更改。

    尽管如此,这并不是真的。 表格是持久的,我过去曾使用过这个技巧。

    页面加载和用户执行通过ajax加载的搜索。 将ajax响应保存为隐藏的输入。 当用户离开页面并返回时,页面脚本检测到隐藏的输入中有内容并对其进行处理,将以前检索到的结果显示给用户。

    链接地址: http://www.djcxy.com/p/18283.html

    上一篇: Why Internet Explorer differs from the expected functionality on a back button

    下一篇: Installing memcache in Windows 7 (XAMPP)