К сожалению, нет простого способа перехватить редиректы, вызванные изменением location.href, location.assign или location.replace. Но вы можете использовать событие beforeunload для отображения диалогового окна с запросом на подтверждение перед покиданием страницы. Но это не позволит вам изменить URL-адрес назначения.
window.onbeforeunload = function(e) {
e.returnValue = 'Вы уверены, что хотите покинуть сайт?';
};
с window.open все сработало, а вот с location.assign, location.replace и location.href - никак. есть ли способы перехватить это?