Как получить предыдущий 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, из которого вы посетили.


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.