Question: I've found what I believe to be a bug with Firefox and I'm wondering if this actually is a bug, as well as any workarounds for this.

If you create a basic webpage with the following source:

```
<html>
  <head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
  </head>
  <body>
    <div>
      <input id="txtTest" type="text" />
      <input type="button" onclick="$('#txtTest').attr('disabled','disabled');" value="Set Disabled (jQuery)" />
      <input type="button" onclick="document.getElementById('txtTest').disabled = true;" value="Set Disabled (js)" />
      <input type="button" onclick="$('#txtTest').removeAttr('disabled');" value="Remove Disabled" />
    </div>
  </body>
</html>

```

If you `disable` the `textbox` dynamically and then refresh the page, the `textbox` will remain disabled instead of resetting back to its original state of not disabled. I've tried this in IE8 and Chrome and those behave as I would expect, resetting the `textbox` back to not disabled when I refresh.

Another interesting bit of information is that it still does the same thing if the input is a `checkbox` instead of a `textbox`.

Answer: 
To deal with the back button, do this (from [here](https://bugzilla.mozilla.org/show_bug.cgi?id=443289))

```
    window.addEventListener('pageshow', PageShowHandler, false);
    window.addEventListener('unload', UnloadHandler, false);

    function PageShowHandler() {
        window.addEventListener('unload', UnloadHandler, false);
    }

    function UnloadHandler() {
        //enable button here
        window.removeEventListener('unload', UnloadHandler, false);
    }

```
As mentioned before you need to add `autocomplete="off"` to your buttons.

Here is a `sh`+`perl` snippet to automate this in the case of `<button>`s in your HTML files/templates (under some assumptions):

```sh
find /path/to/html/templates -type f -name '*.html' -exec perl -pi -e \
  's/(?<=<button )(.*?)(?=>)/@{[(index($1,"autocomplete=")!=-1?"$1":"$1 autocomplete=\"off\"")]}/g' \
  {} +

```

The assumptions are:

* Opening `<button>` tags begin and end on the same line. If this is not the case (i.e. they might be split over several lines) then replacing `/g` with `/gs` should help (the [`s` modifier](http://perldoc.perl.org/perlre.html#Modifiers) causes `.` to match newlines as well)
* Valid HTML (e.g. there are no funny characters between `<` and `>`) and no unescaped greater than (`>`) inside the opening tag.