如何通过在javascript中单击浏览器的后退按钮将页面恢复到以前的状态
How to take back a page to its previous state by clicking the back button of the browser in javascript
我有一个从link
到form
的页面。点击link
后,form
出现,link
消失。我遇到的问题是,当我单击浏览器的back button
时,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>
- 第一个问题是:如何通过单击浏览器的后退按钮将页面恢复到以前的状态
- 第二个问题是:当页面处于第二种状态时(当表单可见时),如何防止页面在重新加载时返回到以前的状态
要使其工作,需要做两件事:
- 要监视浏览器后退按钮单击,请使用window.onpopstate方法
- 要记住表单状态,您需要将值存储在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上,您可以实际看到它是如何工作的。
相关文章:
- CSS 动画将恢复为原始状态
- Javascript:保存和恢复样式状态在IE中不起作用
- Javascript:onclick函数工作一次,页面就会恢复到原来的状态
- Web Audio API从暂停状态恢复
- HTML5画布-保存和恢复拖放画布状态
- 如何通过在javascript中单击浏览器的后退按钮将页面恢复到以前的状态
- 从 0 和 1 的数组恢复复选框的状态
- 恢复到以前的状态 - 拖放
- 停止无限CSS3动画并平滑恢复到初始状态
- 向上滚动时,基于滚动位置的 javascript 动画不会恢复到其原始状态
- 如何检测 IHttpActionResult 状态代码在$http/恢复
- 为什么这个 HTML/JS 在更改内部 HTML 后会恢复到原始状态
- 有两个html页面.当我从下一页恢复到第一页时,我希望保存第一页的数据状态
- 使用“:悬停”;并使其恢复到它's较小(初始状态)
- 如何保存和恢复KineticJS的状态
- Rhino:能够暂停、保存状态和恢复javascript
- 通过javascript API保存和恢复Tableau图的当前视图状态
- JQGridtoolbar过滤并恢复具有格式化列的处于编辑状态的行
- 如何从WebSocket客户端计算机进入睡眠状态或应用程序进入后台(iPad上的Safari)中恢复
- 试着恢复状态.表达式语言操作符