【发布时间】:2013-08-28 10:47:21
【问题描述】:
我有一个显示用户信息的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并停留在同一页面)
【问题讨论】:
标签: ajax html back forward html5-history