我有一个显示用户信息的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
并保持同一页面)
答案 0 :(得分:0)
虚拟状态是您明确设置为"不可显示状态的状态":他们的主要目标是重置前进状态。 我将这些特定的虚拟状态称为"删除"的状态。
我已将该原则用于多个Web应用程序,并且运行良好。
这就像推动不会使你的申请移动的状态,但是明确的历史状态。
history.pushState({removed:true},' yourcurrenttitle',' yourcurrenturl');
在popstate事件上,如果遇到这些已删除的状态,请使脚本不启动常规行为。