window.onbeforeunload запускается только при закрытии окна, а не при обновлении

У меня есть эта функция

 window.onbeforeunload = function () {        
          return "Are you sure?";        
    };

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

Есть ли способ либо отключить функцию onbeforeunload в моей функции onclick кнопки, либо вызвать вызов window.onbeforeunload только при закрытии окна, а не при обновлении?


person raym0nd    schedule 18.06.2012    source источник
comment
@SheikhHeera либо отключите функцию onbeforeunload в моей кнопке onclick, либо сделайте вызов window.onbeforeunload только при закрытии окна, а не при обновлении   -  person raym0nd    schedule 18.06.2012
comment
попробуйте это jsfiddle.net/heera/FKNkn/5   -  person The Alpha    schedule 18.06.2012
comment
Итак, теперь кажется, что raym0nd всегда хотел этого в Chrome (январь 2017 г.)   -  person Motes    schedule 05.01.2017


Ответы (2)


Следующий код должен работать (должен храниться внутри тега заголовка между тегами сценария)

window.onload=function(){

    window.onbeforeunload = function(){        
        return "Are you sure?";        
    }

    document.getElementById('refresh').onclick=function(){
        window.onbeforeunload = null;
        window.location.reload(); // replace with your code
    }
}​

РАБОЧАЯ ДЕМО.

person The Alpha    schedule 18.06.2012

Другой подход - использовать файлы cookie. установите cookie в качестве флага, когда вы хотите обновить страницу без вызова функции onbeforeunload.

 window.onbeforeunload = function (e) { 
...      
   canceled = getCookie("canceled");
         if (canceled == "false" || canceled == undefined)
          {//do ur stuff here
          }
...
}

и установите для файла cookie значение 5 секунд, чтобы срок его действия истек сразу после перезагрузки страницы.

person Community    schedule 18.06.2012
comment
как установить куки на 5 сек? - person ; 08.01.2014