Как получить предыдущий 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)