我有一个页面foo.html,其中包含输入字段和动态内容。离开此页面并使用浏览器的后退按钮返回后,我发现各种浏览器的行为不一致:
浏览器应该如何做出某些指定的默认行为,还是这种“实现定义的行为”?
其他细节:这是我用于测试的最小例子:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type="text" id="mytext" />
<span id="myspan"></span>
<a href="http://www.stackoverflow.com">Leave</a>
<script type="text/javascript">
$(function () {
$("#mytext").on("input", function () { $("#myspan").text(this.value); });
});
</script>
在文本框中输入的文本(“用户输入”)将镜像到范围(“动态内容”)中。我已使用不同的浏览器对其进行了测试,结果如下:
注意:当页面变得更复杂且AJAX更重时(例如Firefox不保留动态内容或IE不保留用户输入),我看到了不同的,不一致的行为。
答案 0 :(得分:0)
通常,行为是标准化的(HTML5规范的第5.6.10节"History Traversal")。不幸的是,由浏览器决定哪个状态是持久的。引用规范的第5.5节"Session history and navigation":
具有持久用户状态的条目也是具有用户代理定义状态的条目。该规范没有规定可以存储哪种状态。
例如,某些用户代理可能希望保留滚动位置或表单控件的值。
因此,根据HTML5规范,您提问中提到的所有示例行为都是有效的。