'Preventing Firefox reload confirmation

I'm displaying certain records in an editable table. The user when attempts to reload the table while editing a record a pop up comes warning the record about the unsaved data.

function cancelProcess()
{
    if(noEditedRecords !=0)//number of edited records in the table
    {
        var processConfirmation = confirm("You've Edited "+ noEditedRecords +" Records. Are You sure to undo the Changes made?");

        if (processConfirmation ==true){
            window.onbeforeunload = null;
            window.location.reload();
        }
    }
}

When he clicks OK to reload the page, Firefox prompts as

To display this page, Firefox must send information that will repeat any action (such as a search or order confirmation) that was performed earlier.

And when opening the same page in Chrome, no such prompt appears.

I tried to avoid this by setting window.onbeforeunload = null;, but still the prompt window appears there.

Also I tried by changing Firefox configuration:

browser.sessionstore.postdata

Changed 0 to 1 as suggested in Mozilla support page.

But nothing worked.. How do I prevent the prompt?



Solution 1:[1]

Using

window.location=window.location;

Instead of

location.reload();

work for me.

Solution 2:[2]

I solved this, and sent data as only GET instead of POST,

It my not suit all needs but it works....

I was also using location.reload();

Solution 3:[3]

The behavior is correct. According to w3schools reload has a parameter forceGet that is default false, and as a result if you have a POST submit, the the browser will try to resend that POST data, and as such, it needs your confirmation. Firefox does this right, and google chrome behaves like it has a default of true for forceGet

http://www.w3schools.com/jsref/met_loc_reload.asp

while window.location=window.location or window.location=window.location.href (or any other variation of this) works most of the time, when you are using an anchor url like http://www.google.com#test will not be refreshed with this method. The browser will do the exact same thing as it will do when you are already on google.com and you change the url by adding #test. The browser will just try to locate the anchor tag in the page that has the name test, and scroll down to it, without refreshing your browser.

The solution that works in this case as well as any other case I encountered would be window.location.reload(true);

Hope this helps,

Alexandru Cosoi

Solution 4:[4]

With Firefox 82 (mac) I have found (big chunk of luck) the right parameter to change:

set dom.confirm_repost.testing.always_accept to true

and the confirmation request window will disapear.

Solution 5:[5]

window.opener.location.href = window.opener.location;

I've found the decision here

(Tested on Firefox 32 and Chrome 38 successfully.)

Solution 6:[6]

The way to avoid that prompt is to not create a situation where a user is trying to reload a POST result page.

Solution 7:[7]

Try this.

setTimeout (function () {
    window.location.reload();
},0);

Solution 8:[8]

The solution worked for me:

-> convert the POST request to GET request.

-> location.reload() to window.location=window.location

Solution 9:[9]

Instead of using location.reload(), use location.href = "file_where_you_are.php"; This prevents to post twice, preventing also the message to appear.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ricardo Huertas
Solution 2 Mikeys4u
Solution 3 Alexandru Cosoi
Solution 4 newbie
Solution 5 Ali Rezaei
Solution 6 Boris Zbarsky
Solution 7 CookieEater
Solution 8 Dharman
Solution 9 Adriano