Chrome 79 不反映 DOM 后退导航后 onpageshow 中的状态
Chrome 79 not reflecting DOM state in onpageshow after back navigation
我认为这是与 Chrome 79 中的 bfcache(前后向缓存)相关的问题,因为这在 Chrome 78 中不是问题。下面的代码演示了在 Windows 10.
上使用最新版本的 Chrome 时出现问题
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Test Page</h1>
<select id="example" multiple>
<option>Black</option>
<option>Cyan</option>
<option>Magenta</option>
<option>Yellow</option>
</select>
<a href="https://www.google.com/">Google</a>
<script type="text/javascript">
window.onpageshow = function () {
//setTimeout(function () {
console.log(document.querySelectorAll('#example option:checked').length);
//}, 100);
};
</script>
</body>
</html>
Select 项目,然后使用超链接离开页面,当按浏览器后退按钮返回页面时,先前选择的项目不会反映在 pageshow event 但在网页上。
我能够解决此问题的唯一方法是设置一个较短的超时时间(请参阅注释掉的代码)。无论如何,我希望阅读这篇文章的人能够在 Chrome 79 中重现,如果是这样,请提出解决问题的最佳方法。
我认为这是与 Chrome 79 中的 bfcache(前后向缓存)相关的问题,因为这在 Chrome 78 中不是问题。下面的代码演示了在 Windows 10.
上使用最新版本的 Chrome 时出现问题<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Test Page</h1>
<select id="example" multiple>
<option>Black</option>
<option>Cyan</option>
<option>Magenta</option>
<option>Yellow</option>
</select>
<a href="https://www.google.com/">Google</a>
<script type="text/javascript">
window.onpageshow = function () {
//setTimeout(function () {
console.log(document.querySelectorAll('#example option:checked').length);
//}, 100);
};
</script>
</body>
</html>
Select 项目,然后使用超链接离开页面,当按浏览器后退按钮返回页面时,先前选择的项目不会反映在 pageshow event 但在网页上。
我能够解决此问题的唯一方法是设置一个较短的超时时间(请参阅注释掉的代码)。无论如何,我希望阅读这篇文章的人能够在 Chrome 79 中重现,如果是这样,请提出解决问题的最佳方法。