10

I'm building a text editor in my website, the workflow is as follows.

  1. In /list, the user picks an entry they want to edit from a list which takes them to /edit/[article_id].
  2. The user does their work, and then clicks submit.
  3. 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?

starleaf1
  • 1,997
  • 1
  • 29
  • 55

2 Answers2

23

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.

Alfin Paul
  • 1,337
  • 8
  • 25
-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).

Abhishek
  • 322
  • 4
  • 17