Why does history back not work on onclick in Firefox?

后端 未结 4 1722
[愿得一人]
[愿得一人] 2021-02-06 02:50

I don\'t understand why in Firefox, window.history.back() does work on a button:

相关标签:
4条回答
  • 2021-02-06 03:24

    You are facing this issue (quoted from vikku.info):

    But what had happened when i press the back button after navigating to various pages was i got locked between the last two navigated pages.

    Someone in the comments hit the nail on this issue.

    • When you create the onclick attribute, you are attaching an additional event handler for clicking a link. However, the browser will still handle some native logic, so it will still add the current page to the history;
    • When you pass in specific javascript into the href attribute, you are actually overriding the native logic of the browser, so it won't add the current page to the history;

    SIMPLE, DIRTY SOLUTION

    HTML:

    <a href="javascript:window.history.back();">Back</a>
    

    IMPROVED SOLUTION

    I've also created an example (Plunker example) that makes use of the native preventDefault functionality (MDN on preventDefault). In that case, it is not needed to write javascript in the href attribute. Now, you can support users that are not using javascript by linking to, for example, the homepage. You better also avoid using inline event handlers.

    HTML:

    <a href="index.html" id="backButton">Back</a>
    

    Javascript:

    var backbutton = document.getElementById("backButton");
    backbutton.onclick = function(e){
      e = e || window.event; // support  for IE8 and lower
      e.preventDefault(); // stop browser from doing native logic
      window.history.back();
    }
    
    0 讨论(0)
  • 2021-02-06 03:40

    Try with

    window.history.go(-1)
    

    Check the link for more details.

    0 讨论(0)
  • 2021-02-06 03:46

    I think it may be related to the href attribute of the a tag, that get interpreted as a next step in navigation (even if you go back in history).

    Try removing the href attribute from the a.

    As you see, this way it works:

    Demo

    You do need just to fix CSS for the a now

    0 讨论(0)
  • 2021-02-06 03:46

    Try this:

    $("#back").click(function(e) {
        e.preventDefault();
        history.back(1);
    })
    

    or

    <a href="javascript:void(0);" onclick="window.history.go(-1); return false;"> Link </a>
    
    0 讨论(0)
提交回复
热议问题