Подтвердить что ты не робот

Предотвращение подтверждения перезагрузки Firefox

Я отображаю определенные записи в редактируемой таблице. Пользователь, когда пытается перезагрузить таблицу во время редактирования всплывающей записи, приходит с предупреждением о несохраненных данных.

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

Когда он нажимает кнопку ОК, чтобы перезагрузить страницу, Firefox предлагает

Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая будет повторять любое действие (например, поиск или подтверждение заказа), которое было выполнено ранее.

И при открытии той же страницы в Chrome такая подсказка не появляется.

Я попытался избежать этого, установив window.onbeforeunload = null; , но все равно там появляется окно подсказки.

Также я попытался изменить конфигурацию Firefox:

browser.sessionstore.postdata

Изменено с 0 на 1, как предлагается на странице поддержки Mozilla.

Но ничего не получалось.. Как мне помешать подсказке?

4b9b3361

Ответ 1

Использование

window.location=window.location;

Вместо

location.reload();

работайте для меня.

Ответ 2

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

Я нашел решение здесь

(Протестировано на Firefox 32 и Chrome 38 успешно.)

Ответ 3

Я решил это и отправил данные только как GET вместо POST,

Это не подходит всем нуждам, но это работает.

Я также использовал location.reload();

Ответ 4

Поведение правильное. Согласно w3schools reload имеет параметр forceGet, который является значением по умолчанию false, и в результате, если у вас есть POST submit, браузер попытается повторно отправить эти данные POST, и поэтому он нуждается в вашем подтверждении, Firefox делает это правильно, а google chrome ведет себя так же, как и по умолчанию для forceGet

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

while window.location=window.location или window.location=window.location.href (или любой другой вариант этого) работает большую часть времени, когда вы используете якорный url, например http://www.google.com#test не будет обновляться с помощью этого метода. Браузер будет делать то же самое, что и когда вы уже на google.com, и вы меняете URL-адрес, добавляя #test. Браузер просто попытается найти тег привязки на странице с тестом имен и прокрутить вниз до него, не обновляя браузер.

Решение, которое работает в этом случае, а также любой другой случай, с которым я столкнулся, будет window.location.reload(true);

Надеюсь, что это поможет,

Александру Козои

Ответ 5

Способ избежать этой подсказки - не создавать ситуацию, когда пользователь пытается перезагрузить страницу результатов POST.

Ответ 6

Попробуйте это.

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