Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用“后退”按钮返回时,修改过的网页的哪些部分会保留?_Javascript_Html_Standards - Fatal编程技术网

Javascript 使用“后退”按钮返回时,修改过的网页的哪些部分会保留?

Javascript 使用“后退”按钮返回时,修改过的网页的哪些部分会保留?,javascript,html,standards,Javascript,Html,Standards,我有一个页面foo.html,其中包含输入字段和动态内容。在离开此页面并使用浏览器的“后退”按钮返回后,我发现不同浏览器之间存在不一致的行为: 有些返回到foo.html的初始版本(没有用户输入,没有动态内容) 有些返回到foo.html的最终版本(用户输入和动态内容) 有些返回新版本的foo.html(保留用户输入,但不保留动态内容) 是否存在浏览器应如何反应的特定默认行为,或者这是“实现定义的行为” 其他详细信息:以下是我用于测试的最小示例: <script src="https

我有一个页面foo.html,其中包含输入字段和动态内容。在离开此页面并使用浏览器的“后退”按钮返回后,我发现不同浏览器之间存在不一致的行为:

  • 有些返回到foo.html的初始版本(没有用户输入,没有动态内容)
  • 有些返回到foo.html的最终版本(用户输入和动态内容)
  • 有些返回新版本的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>

$(函数(){
$(“#mytext”).on(“输入”,函数(){$(“#myspan”).text(this.value);});
});
在文本框(“用户输入”)中输入的文本将镜像到范围(“动态内容”)。我用不同的浏览器对其进行了测试,结果如下:

  • Chrome 58、Edge 40、IE 11(通过http URL访问):保留用户输入,不保留动态内容
  • Firefox53,Opera Mobile Emulator 12.10:保留用户输入和动态内容
  • IE 11(通过文件URL访问):既不保留用户输入,也不保留动态内容

注意:当页面变得更复杂和AJAX更繁重时,我看到了不同的、不一致的行为(例如Firefox不保留动态内容或IE不保留用户输入)。

一般来说,行为是标准化的(HTML5规范第5.6.10节)。不幸的是,由浏览器决定哪种状态被持久化。引用规范第5.5节:

具有持久化用户状态的条目也具有用户代理定义的状态。本规范未指定可以存储何种状态

例如,某些用户代理可能希望保留滚动位置或表单控件的值

因此,根据HTML5规范,您问题中提到的所有示例行为都是有效的