Как JavaScript история объектов сохраняет URL в своем стеке? - PullRequest
0 голосов
/ 27 января 2020

У меня есть эта история, регистрируется в объекте window.history с 5 как моей текущей страницей.

5) http://myapp.com/great-new-story/01242020.html
4) http://myapp.com/great-new-story/01052020.html
3) http://myapp.com/great-new-story/12012019.html
2) http://myapp.com/allnews.html
1) http://myapp.com

Тогда я хочу go на страницу allnews.html (или № 2), будет allnews.html войти в систему № 6?

Или он не будет зарегистрирован и будет использовать (№ 2), так как allnews уже был в стеке?

Ответы [ 3 ]

2 голосов
/ 27 января 2020

Вот простой эксперимент:

  1. Подсчитайте длину истории.

    window.history.length();    //4
    
  2. Go несколько шагов назад

    window.history.go(-2);
    
  3. Получите длину снова. Его по-прежнему 4!

Ответ:

Перемещение по истории не увеличит глубину.

1 голос
/ 27 января 2020

AFAIK это будет pu sh в новом, из-за простого факта, это также используется для кнопок навигации назад и вперед, поэтому должно быть так, также я только что проверил это. Создал новую вкладку> open google.com что-то искал и в основном это перенаправлял, поэтому потом длина окна window.history увеличилась, затем в омнибар. Панель поиска я написал на google.com - длина окна window.history снова увеличивается.

И, как я уже сказал, это должно быть так для обслуживания стека назад и вперед

0 голосов
/ 27 января 2020

Спасибо за помощь, ребята, очень ценю: y: :)

Однако я нашел ответ на мою проблему. И речь идет об использовании location.replace вместо использования location.assign при перенаправлении на сайт. Я обнаружил, что location.replace -

удаляет URL-адрес текущего документа из истории документа, что означает, что невозможно использовать кнопку «назад» для перехода к исходному документу. .

согласно школам. Вот почему я начал использовать Location.assign, где после того, как я щелкнул ссылку, а затем щелкнул history.back, он перенаправился на правильный предыдущий сайт.

...