点击后退按钮时如何将 <select> 元素更改回默认值?

Posted

技术标签:

【中文标题】点击后退按钮时如何将 <select> 元素更改回默认值?【英文标题】:How to change a <select> element back to the default value when hitting the back button? 【发布时间】:2014-05-10 03:16:12 【问题描述】:

我有一个&lt;select&gt; 元素,用于导航。您单击它以选择要转到的页面,然后单击它会转到该页面。这是它的代码:

<select onchange="window.open(this.options[this.selectedIndex].value,'_top')">
    <option value="/item1" selected>Item 1</option>
    <option value="/item2" selected>Item 2</option>
    <option value="/item3" selected>Item 3</option>
</select>

当我使用它时,它会正确进入页面,但是当点击后退按钮时,下拉菜单中已经选择了我去的页面。比如我在第 1 项,然后选择第 2 项,然后通过浏览器的返回按钮回到第 1 项,在列表中选择第 2 项,这有点混乱。

如何让它切换回默认值?

【问题讨论】:

我认为浏览器的后退按钮会显示页面的缓存副本,并且 nat 实际上会重新加载页面。我想。 【参考方案1】:

您可以将选择框重置为默认值,然后导航到新页面。这是一个如何做到这一点的示例。

<script>
fix_ipad = function(evt)
    go_to = document.getElementById('go_to');
    go_to.selectedIndex = 0; // reset to default value before leaving current page
;

window.addEventListener("pagehide",fix_ipad,false);

goto_page_and_reset_default = function()
    go_to = document.getElementById('go_to');
    go_to_page = go_to.value;
    go_to.selectedIndex = 0; // reset to default value before leaving current page

    window.open(go_to_page,"_top");    


</script>

<select onchange="goto_page_and_reset_default()" id='go_to'>
    <option value="/item1" selected>Item 1</option>
    <option value="/item2" selected>Item 2</option>
    <option value="/item3" selected>Item 3</option>
</select>

【讨论】:

在 iPad 上,当我测试它时,它不起作用,但在 Windows 8 上它可以工作。有什么修复吗? 我已经为 ipad 添加了一个可能的修复程序,但我无法对其进行测试。让我知道它是否适合您。【参考方案2】:

可能重复https://***.com/questions/8861181

现代浏览器实现了一种称为后向缓存 (BFCache) 的东西。当您点击后退/前进按钮时,实际页面不会重新加载(并且脚本永远不会重新运行)。

如果您必须在用户点击后退/前进键的情况下执行某些操作 - 侦听 BFCache pageshow 和 pagehide 事件。

一个伪 jQuery 示例:

$(window).bind("pageshow", function() 
  // update hidden input field
);

【讨论】:

您能否在$(window).bind("pageshow") 函数中调用location.reload(); 以确保不会发生这种情况?

以上是关于点击后退按钮时如何将 <select> 元素更改回默认值?的主要内容,如果未能解决你的问题,请参考以下文章

如何取消选中后退按钮上的复选框?

按下后退按钮时如何跳过上一个视图

单击后退按钮时如何正确显示 ajax 填充页面

点击浏览器后退按钮时如何刷新 ASP .NET MVC 页面

如何用jQuery禁用浏览器的前进后退按钮

如何从 Ionic5 代码触发后退按钮