gpt4 book ai didi

javascript - 如何通过在javascript中单击浏览器的后退按钮将页面恢复到以前的状态

转载 作者:行者123 更新时间:2023-11-30 16:11:21 25 4
gpt4 key购买 nike

我有一个页面,其中包含指向表单链接。单击 link 后,form 出现,link 消失。我遇到的问题是,当我单击浏览器的后退按钮 时,URL 的值已更改,但页面状态不会返回到之前的状态。 form 应该会消失,link 会重新显示。同样在 form 可见时重新加载时,页面返回到其第一个状态,我需要防止这种情况发生。

代码:

<html>
<style>
.titimmo {
text-align: center;
padding: 10px;
font-size: 14pt;
background-color: #CC3300;
display: block;
}

.hidden {
display: none;
}

.visible {
display: block;
}

#formContainer {
padding: 1em 0 1em 2em;
background-color: #E8E8E8;
margin: 1em 0 1em 2em;
width: 88.9%;
}

#formContainer h4 {
color: #FF3300;
}
</style>
<body>
<div id="categContainer1">
<div class="titimmo"><a href="add.php?c=realestate" id="a_categ">Real Estate</a></div>
</div>

<div id="formContainer" class="hidden">
<form action="add.php" method="post">
<h4>Location :</h4>
<input type="text" name="made"/>
<h4>Price :</h4>
<input type="text" name="modele"/><br/><br/>
</form>
</div>
<script>
function stepone() {
document.getElementById('a_categ').onclick = function () {
document.getElementById('categContainer1').className += " hidden";

document.getElementById('formContainer').className = "visible";
window.history.pushState('Form', 'My form', this.getAttribute("href"));
return false

};
}

stepone();
</script>
</body>
</html>
  • 第一个问题是:如何通过点击浏览器的后退按钮将页面恢复到之前的状态?
  • 第二个问题是:如何防止页面返回到之前的状态 - 当它处于第二状态时(当表单可见时)重新加载?

最佳答案

要使其正常工作,您需要做两件事:

  1. 要监控浏览器后退按钮的点击,请使用 window.onpopstate方法
  2. 要记住表单状态,您需要将值存储在 localStorage或在 cookie 中。

这是一个基本的例子:

var formVisible = localStorage.formVisible || false;
var cContainer = document.getElementById('categContainer1');
var fContainer = document.getElementById('formContainer');
function formOpen(e) {
cContainer.className = "hidden";
fContainer.className = "visible";
window.history.pushState('Form', 'My form', this.getAttribute("href"));
localStorage.formVisible = 'Y';
return false;
};
function formClose(e) {
cContainer.className = "visible";
fContainer.className = "hidden";
localStorage.removeItem( 'formVisible' );
};
if( formVisible ) formOpen();
document.getElementById('a_categ').onclick = formOpen;
window.onpopstate = formClose;

var formVisible = localStorage.formVisible || false;
var cContainer = document.getElementById('categContainer1');
var fContainer = document.getElementById('formContainer');
function formOpen(e) {
cContainer.className = "hidden";
fContainer.className = "visible";
window.history.pushState('Form', 'My form', this.getAttribute("href"));
localStorage.formVisible = 'Y';
return false;
};
function formClose(e) {
cContainer.className = "visible";
fContainer.className = "hidden";
localStorage.removeItem( 'formVisible' );
};
if( formVisible ) formOpen();
document.getElementById('a_categ').onclick = formOpen;
window.onpopstate = formClose;
.titimmo {
text-align: center;
padding: 10px;
font-size: 14pt;
background-color: #CC3300;
display: block;
}

.hidden {
display: none;
}

.visible {
display: block;
}

#formContainer {
padding: 1em 0 1em 2em;
background-color: #E8E8E8;
margin: 1em 0 1em 2em;
width: 88.9%;
}

#formContainer h4 {
color: #FF3300;
}
<div id="categContainer1">
<div class="titimmo">
<a href="add.php?c=realestate" id="a_categ">Real Estate</a>
</div>
</div>

<div id="formContainer" class="hidden">
<form action="add.php" method="post">
<h4>Location :</h4>
<input type="text" name="made" />
<h4>Price :</h4>
<input type="text" name="modele" />
</form>
</div>

也在 Fiddle 上,您实际上可以看到它是如何工作的

关于javascript - 如何通过在javascript中单击浏览器的后退按钮将页面恢复到以前的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36209584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com