我有一个webpage
显示用户信息的。我ajax
用来允许用户在不更改网页的情况下修改此数据。
结构非常简单:
- 当用户进入个人资料时,他可以看到他的数据。
- 如果用户单击编辑按钮,则会看到一个修改数据的表单。
- 如果用户发送表单,则保存数据并再次显示静态数据(更新)。用户不应使用该Back
按钮返回编辑页面。
- 如果用户在编辑时单击返回,则再次显示静态数据。
- 如果用户在看到静态数据时点击返回,他应该总是返回到上一页(不是配置文件)。
我HTML5 History API
用来处理Back
按钮点击。当用户提交数据时我遇到了问题,因为我希望他回到以前的状态(而不是编辑)而无法继续。这就是我现在正在做的事情:
// Edit button clicked.
function edit1(){
history.pushState("edit", null, "");
showForm();
}
window.addEventListener("popstate", function(e) {
var HistoryState = history.state;
if(HistoryState == null){
showStaticData();
}
else if(HistoryState == "edit1"){
showForm();
}
});
$('#myForm').submit(function () {
...
history.back(); // CODE TO DO WHEN THE FORM HAS BEEN SUBMITTED
return false;
});
如果我使用 history.back() 就像我在上面的代码中所做的那样,除了用户能够单击Forward
按钮之外,一切正常。如果我使用replaceState 或pushState,则该Forward
按钮被禁用,但是用户可以单击该Back
按钮并停留在同一页面中(我不希望那样)。
有没有办法在Forward
不添加新状态的情况下禁用按钮?(我不希望用户点击Back
并停留在同一页面)