为什么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的ValueChangeHandler
的onValueChange
方法
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