Отменить onbeforeunload обработчик событий?
У меня есть обработчик события onbeforeunload, прикрепленный к странице, который выполняется каждый раз, когда страница перезагружается/перенаправляется.
window.onbeforeunload = function() {
console.log("do something");}
Я не хочу, чтобы этот script запускался во время моих тестов. Я хочу отключить его в своей тестовой среде.
Есть ли способ отменить это событие onbeforeunload? Я использую JavaScript с jQuery в качестве фреймворка, поэтому ответ в jQuery будет хорошим.
Ответы
Ответ 1
В javascript функции могут быть перезаписаны. Вы можете просто назначить ему новую цель:
window.onbeforeunload = function () {
// blank function do nothing
}
Это полностью перезапишет существующую версию window.onbeforeunload
.
Примечание. Почему бы вам просто не удалить строку кода, которая устанавливает эту функцию в первую очередь? Или, если вы не можете, вам нужно будет установить эту пустую функцию после того, как она будет определена, чтобы убедиться, что она не переопределена.
Ответ 2
Непосредственно связанный с этим вопросом (пожалуйста, не уменьшайте из-за этого), но может помочь кому-то, тем не менее, это то, что я использую в Angular 1.x и TypeScript:
this.$window.onbeforeunload = () => null;
Ответ 3
jQuery ≥ 1.7
С обновлением jQuery 1.7 API событий обновлен .bind()/. unbind() все еще доступны для обратной совместимости, но предпочтительный метод использует функции on()/off(). Теперь будет ниже:
$('#myimage').click(function() { return false; }); // Adds another click event
$('#myimage').off('click');
$('#myimage').on('click.mynamespace', function() { /* Do stuff */ });
$('#myimage').off('click.mynamespace');