#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();