问题
I'm building a text editor in my website, the workflow is as follows.
- In
/list
, the user picks an entry they want to edit from a list which takes them to/edit/[article_id]
. - The user does their work, and then clicks submit.
- The server processes the thing, and redirects them back to
/edit/[article_id]
which by now reflects the edited work. The server also activates a flash message on the page to indicate the edit was successful.
By this point, the user probably wants to go back to /list
and clicks the browser's Back button. This will take them back to the editor repeatedly depending on how many times they submitted.
I've tried putting a Back button somewhere on the page, but a good many users simply ignore it.
I'd rather not make the submission posted via AJAX, since that would also affect the flash message system.
What I like to do, is replace the last entry on the history list when the user submits, without changing its length. Is it possible?
回答1:
Try this
window.location.replace(url);
after using replace()
the current page will not be saved in session history, meaning the user won't be able to use the Back button to navigate to it.
回答2:
Use window.close():
close();
Note: the current tab is implied. This is equivalent:
window.close();
or you can specify a different window.
So:
function close_window() {
if (confirm("Close Window?")) {
close();
}
}
with HTML:
<a href="javascript:close_window();">close</a>
or:
<a href="#" onclick="close_window();return false;">close</a>
You return false here to prevent the default behavior for the event. Otherwise the browser will attempt to go to that URL (which it obviously isn't).
来源:https://stackoverflow.com/questions/42918837/removing-current-page-from-browser-history