Отменить обработчик события onbeforeunload?
У меня есть обработчик события onbeforeunload, прикрепленный к странице, которая выполняется каждый раз, когда страница перезагружается / перенаправляется.
window.onbeforeunload = function() {
console.log("do something");}
Я не хочу, чтобы этот скрипт запустить во время моих тестов. Я хочу отключить его в своей тестовой среде.
есть ли способ отменить это событие onbeforeunload? Я использую JavaScript с jQuery в качестве фреймворка, поэтому ответ в jQuery будет хорошим.
3 ответов
в javascript функции могут быть перезаписаны. Вы можете просто назначить ему новую цель:
window.onbeforeunload = function () {
// blank function do nothing
}
это полностью перезапишет существующую версию window.onbeforeunload
.
Примечание: почему бы вам просто не удалить строку кода, которая устанавливает эту функцию в первую очередь? Или, если вы не можете, вам придется установить эту пустую функцию после того, как она была определена, просто чтобы убедиться, что она не переопределена снова
не сразу связан с этим вопросом (пожалуйста, не понижайте из-за этого), но может помочь кому-то, тем не менее, это то, что я использую в Angular 1.x и TypeScript:
this.$window.onbeforeunload = () => null;
jQuery ≥ 1.7
С jQuery 1.7 далее API событий был обновлен .связывать./)(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');