5
当用户通过观看$stateChangeStart
事件点击浏览器Back
按钮时,显示Javascript Confirm
提示。考虑以下内容:带有Angularjs和UIRouter的event.preventDefault()删除浏览器历史记录
用户从第1页,第2页,然后第3页导航。在第3页上,用户单击Back
按钮,它们会显示一个确认框。用户点击Cancel
按钮,执行event.preventDefault()
并且用户保持在同一页面上。然后,如果用户再次点击Back
,并且第二次选择OK
,则用户将被带回第1页。第2页发生了什么? event.preventDefault()
删除最后一个历史记录吗?如何防止浏览器跳过上一页?
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
var retVal = confirm("You have unsaved changes. If you leave the page, these changes will be lost.");
if (retVal == false) {
// user wants to cancel navigating back.
event.preventDefault();
}
});