Зависит от того, как пользователь покидает страницу.Если они набирают URL в адресной строке - тогда вам не повезло.Насколько я знаю, нет способа захватить URL-адрес перехода в адресной строке.
Если они нажимают на ссылку, содержащуюся где-то на странице, - вы можете использовать событие click для захвата URL-адреса, а затемрешить, как вы хотите справиться с вещами.
Я задал похожий вопрос
Как я могу получить целевой URL ссылки на веб-странице в событии javascript onbeforeunload?
, потому что у меня был проект, который нужно исправитьФорма оптового заказа.В процессе оформления заказа клиенты моего клиента возвращаются в каталог, чтобы проверить страницу сведений о продукте и потерять текущую информацию в форме заказа.
Используя приведенный ниже код (который использует JQuery, хотя яуверен, что вы можете создать то же самое в чистом Javascript, если нужно). Я мог бы сказать, когда пользователь щелкнул ссылку, которая оставляла форму заказа, а затем дал им возможность открыть ссылку в новом окне / вкладке или загрузить URL-адрес.в текущем окне и потерять данные формы или просто вернуться к форме.Этот код работает со всеми основными браузерами, по крайней мере, с их более поздними версиями.
$('body a').click(function(e) {
//if link references a page element
if ($(this).attr('href').charAt(0)=="#") {
return;
}
//check if link is to same window
var pathname = window.location.pathname;
var pathname2 = $(this).attr('href');
pathname2 = pathname2.replace(/^.+\.\//, '');
if (pathname.indexOf(pathname2) >= 0) {
//link clicked is contained on same page
//prevent page from getting reloaded & losing data
e.preventDefault();
e.stopImmediatePropagation();
e.stopPropagation();
return;
}
//link clicked on is another page
if (hasMerchandise) { //var to indicate user has items on order form
//give user options: leave page, open link in other page, stay, etc.
// $('.popupForm-handleExitRequest').click(); //roll your own code
//prevent page from getting reloaded & losing data
//in case user wants to cancel page change or open link in another window
e.preventDefault();
e.stopImmediatePropagation();
e.stopPropagation();
} else {
//load new page
$(this).removeAttr('target');
}
});