Как получить предыдущий URL в JavaScript?
есть ли способ получить предыдущий URL в JavaScript? Что-то вроде этого:--2-->
alert("previous url is: " + window.history.previous.href);
есть что-то подобное? Или просто хранить в печенье? Мне нужно только знать, чтобы я мог делать переходы с предыдущего URL на текущий URL без якорей и все такое.
6 ответов
document.referrer
во многих случаях вы получите URL последней страницы, которую посетил пользователь, если они попали на текущую страницу, нажав на ссылку (против ввода непосредственно в адресную строку, или я считаю, в некоторых случаях, отправив форму?). Указано DOM Уровень 2. здесь.
window.history
разрешает навигацию, но не доступ к URL-адресам в сеансе по соображениям безопасности и конфиденциальности. Если более подробная история URL была доступна, то каждый сайт, который вы посещаете можно было увидеть все другие сайты, где ты был.
Если вы имеете дело с состоянием, перемещающимся по вашему собственному сайту, возможно, менее хрупким и, безусловно, более полезным использовать один из обычных методов управления сеансами: данные cookie, параметры URL или информация о сеансе на стороне сервера.
document.referrer
не совпадает с фактическим URL во всех ситуациях.
у меня есть приложение, где мне нужно создать набор с 2 рамами. Один кадр известен,другой-страница, с которой я связываюсь. Казалось бы, что document.referrer
было бы идеально, потому что вам не пришлось бы передавать фактическое имя файла в документ набора фреймов.
однако, если вы позже измените нижнюю страницу фрейма, а затем используйте history.back()
он не загружает исходную страницу в нижнюю рамку, вместо этого он перезагружает document.referrer
и в результате набор фреймов исчез, и вы вернулись к исходному стартовому окну.
мне потребовалось некоторое время, чтобы понять это. Итак, в массиве истории document.referrer
- Это не только URL, это, по-видимому, спецификация окна реферера. По крайней мере, это лучшее, что я могу понять на данный момент.
Если вы хотите перейти на предыдущую страницу, не зная 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.
но вы не можете управлять содержимым стека истории в браузере, который не поддерживает HTML5 History API
для получения дополнительной информации см. doc
те из вас, кто использует 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 был другим веб-сайт, сессия была очищена или просто создана (загрузка веб-сайта в первый раз).
document.referrer
даст предыдущий URL страницы, но он будет работать для всех браузеров, таких как Opera, Mozilla Firefox, Safari и т. д., Но не работает в Internet Explorer. Это приведет к null, когда вы используете это document.referrer
в IE.