В Javascript, как мне «очистить» обратную сторону (история -1)?

#javascript

#javascript #HTML #css

Вопрос:

Когда пользователь загружает страницу, я сразу же делаю перенаправление окна в другое место.

Проблема в том, что когда пользователь нажимает назад, он возвращается на страницу, которая выполняет перенаправление.

Могу ли я «отменить» историю предыдущей страницы? Чтобы, когда пользователь нажимает назад, он возвращался на ДВЕ страницы назад?

Ответ №1:

Вместо использования window.location = url; для перенаправления,

попробуйте:

 window.location.replace(url);
  

после использования replace() текущая страница не будет сохранена в
истории сеансов, что означает, что пользователь не сможет использовать кнопку «Назад» для
перехода к ней.

Комментарии:

1. Спасибо… Я искал это.

2. Это работает для страниц, над загрузкой которых я контролирую, но как насчет случаев, когда вы хотите очистить все предыдущие просмотры (разные сайты)? Я ленив и не хочу обрабатывать выход из веб-приложения намеренно или специально с помощью кнопки «Назад».

3. Есть ли способ сделать это без загрузки определенной новой страницы?

4. Для меня это сработало как шарм

Ответ №2:

Вы можете использовать location.replace для замены текущей записи местоположения (страницы перенаправления) на новую (целевую). Для этого требуется, чтобы вы выполняли перенаправление с помощью JavaScript, а не с помощью мета-тегов или 302. Например.:

 // In the redirecting page
location.replace("path/to/target/page");
  

Живой пример | Источник живого примера

Ответ №3:

Для тех, кто сталкивается с этой страницей и ищет способ AngularJS для достижения этой цели (а не javascript), используйте метод replace() службы $location(документация) :

Используйте $location.url('/newpath'); или $location.path('/newpath'); , как обычно, для перенаправления в angular. А затем просто добавьте $location.replace(); сразу после этого. Или вы можете объединить команды следующим образом:

 $location.url('/newpath').replace();