Внимательно посмотрите на то, что делает Facebook: вы получаете сообщение, если вы щелкаете ссылку на странице , но ничего не делаете при вводе нового URL-адреса в адресной строке, нажатии на закладку или навигации Вернуться в историю вашего браузера.
Если это работает для вас, это достаточно просто сделать: просто добавьте обработчик событий click
к каждой ссылке на странице и вызовите на ней свое стилизованное подтверждение. Так как эти обработчики будут вызываться до start любых событий навигации, инициируемых внутри самой страницы, вы можете в значительной степени делать все, что захотите в обработчике - сохранять данные, полностью отменять событие, записывать намеченное пункт назначения и отложить его до тех пор, пока они не подтвердят ...
Однако, если вам нужно или вы хотите отвечать на события навигации, вызванные извне, вам придется использовать onbeforeunload
. И да, диалог дерьмовый, и вы не можете отменить мероприятие - это цена, которую мы платим за всех скандальных идиотов, злоупотребляющих такими функциями еще в 90-х годах. К сожалению ...