Preventing Firefox reload confirmation

2019-03-18 00:39发布

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?

6条回答
何必那么认真
2楼-- · 2019-03-18 01:13

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

查看更多
Viruses.
3楼-- · 2019-03-18 01:17

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();

查看更多
4楼-- · 2019-03-18 01:28

Using

window.location=window.location;

Instead of

location.reload();

work for me.

查看更多
Juvenile、少年°
5楼-- · 2019-03-18 01:29

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

查看更多
在下西门庆
6楼-- · 2019-03-18 01:32
window.opener.location.href = window.opener.location;

I've found the decision here

(Tested on Firefox 32 and Chrome 38 successfully.)

查看更多
爱情/是我丢掉的垃圾
7楼-- · 2019-03-18 01:34

Try this.

setTimeout (function () {
    window.location.reload();
},0);
查看更多
登录 后发表回答