Как получить предыдущий URL-адрес в JavaScript?

Есть ли способ получить предыдущий URL-адрес в JavaScript? Что-то вроде этого:

alert("previous url is: " + window.history.previous.href);

Есть ли что-то подобное? Или я должен просто хранить его в cookie? Мне нужно только знать, поэтому я могу делать переходы с предыдущего URL на текущий URL без привязок и все такое.

Ответ 1

document.referrer

во многих случаях вы получите URL-адрес последней страницы, которую посетил пользователь, если они попали на текущую страницу, щелкнув ссылку (по сравнению с типизацией непосредственно в адресной строке, или я верю в некоторых случаях, отправив форму?). Указывается Уровень DOM 2. Подробнее здесь.

window.history позволяет навигацию, но не доступ к URL-адресам в сеансе по соображениям безопасности и конфиденциальности. Если была доступна более подробная история URL-адресов, каждый посещаемый вами сайт мог видеть все остальные сайты, на которых вы были.

Если вы имеете дело с состоянием, перемещающимся по вашему собственному сайту, то он, возможно, менее хрупкий и, конечно, более полезен для использования одного из обычных методов управления сеансом: данные cookie, параметры URL или информация о сеансе на стороне сервера.

Ответ 2

Если вы хотите перейти на предыдущую страницу, не зная URL-адрес, вы можете использовать новую историю api.

history.back(); //Go to the previous page
history.forward(); //Go to the next page in the stack
history.go(index); //Where index could be 1, -1, 56, etc.

Но вы не можете манипулировать содержимым стека истории в браузере, который не поддерживает API истории HTML5

Для получения дополнительной информации см. doc

Ответ 3

document.referrer

Это стандартный, он даст URL, с которого вы побывали.

Ответ 4

document.referrer не совпадает с фактическим URL во всех ситуациях.

У меня есть приложение, где мне нужно установить набор фреймов с 2 кадрами. Один кадр известен, другой - страница, с которой я связываюсь. Казалось бы, document.referrer будет идеальным, потому что вам не нужно передавать фактическое имя файла в документ набора фреймов.

Однако, если вы позже измените страницу нижнего фрейма, а затем используйте history.back(), он не загрузит исходную страницу в нижний фрейм, вместо этого перезагрузит document.referrer, и в результате набор фреймов исчезнет, ​​и вы вернетесь к исходное начальное окно.

Понадобился немного времени, чтобы понять это. Поэтому в массиве истории document.referrer есть не только URL-адрес, но и, видимо, спецификация окна реферера. По крайней мере, это лучший способ понять это в это время.

Ответ 5

Если вы пишете веб-приложение или одностраничное приложение (SPA), в котором маршрутизация выполняется в приложении/браузере, а не в обратном направлении на сервер, вы можете сделать следующее:

window.history.pushState({ prevUrl: window.location.href }, null, "/new/path/in/your/app")

Затем в вашем новом маршруте вы можете сделать следующее, чтобы получить предыдущий URL:

window.history.state.prevUrl // your previous url

Ответ 6

Те из вас, кто использует Node.js и Express, могут установить cookie файл сеанса, который запомнит URL текущей страницы, что позволит вам проверить реферер при загрузке следующей страницы. Вот пример, который использует промежуточное программное обеспечение express-session:

//Add me after the express-session middleware    
app.use((req, res, next) => {
    req.session.referrer = req.protocol + '://' + req.get('host') + req.originalUrl;
    next();
});

Затем вы можете проверить наличие cookie файла реферера следующим образом:

if ( req.session.referrer ) console.log(req.session.referrer);

Не предполагайте, что cookie файл реферера всегда существует с этим методом, поскольку он не будет доступен в тех случаях, когда предыдущий URL-адрес был другим веб-сайтом, сеанс был очищен или был только что создан (загрузка веб-сайта впервые).

Ответ 7

<script type="text/javascript">
    document.write(document.referrer);
</script>

document.referrer удовлетворяет вашим целям, но не работает для версий Internet Explorer более ранних, чем IE9.

Он будет работать для других популярных браузеров, таких как Chrome, Mozilla, Opera, Safari и т.д.

Ответ 8

Это позволит перейти к ранее посещенному URL.

javascript:history.go(-1)