В чем разница между загрузкой страницы и окном.местоположение.назначить()

#javascript #html #browser #reload #difference

Вопрос:

Когда я запустил этот html-код(имя: Test.html):

     <body>
      <a id="button" href="Test.html#no">Reload</a><br>
      <!-- some code here -->
      <a name='no'></a>Messi
      <script>
        let a = 0;
        let reloadbtn = document.querySelector('#button');
        reloadbtn.addEventListener('click', (event)=>{
          console.log(window.location.href);
        })
      </script>
    </body>
 

с помощью загрузки/перезагрузки страницы, и я нажимаю ссылку перезагрузки, я получаю «путь/к/тесту.html#нет», напечатанный на консоли.
Однако, если я обновлю страницу window.location.assign('Test.html') и нажму ссылку «Перезагрузить» на странице , я получу ‘path/to/Test.html» напечатано на консоли.

Похоже, что загрузка/перезагрузка браузера заставляет ссылки window.location.href правильно присваивать свойство при нажатии, но window.location.assign() это не так.

Я хотел бы знать разницу между загрузкой браузера и окном.location.assign()?; Как JavaScript ведет себя с ними соответственно? Можно ли точно смоделировать загрузку/перезагрузку браузера с помощью JavaScript?

Изменить: Когда я изменю свой код сценария на этот:

  <body>
      <a id="button" href="Test.html#no">Reload</a><br>
      <!-- some code here -->
      <a name='no'></a>Messi
      <script>
        let a = 0;
        let reloadbtn = document.querySelector('#button');
        reloadbtn.addEventListener('click', (event)=>{
          console.log(window.location.href);
        setTimeout(()=>(console.log(window.location.href)), 1000);
      })
      </script>
   </body>
 

и обновите страницу window.location.assign('Test.html') , и нажмите ссылку Перезагрузить, я получу ‘path/to/Test.html» и «путь/к/тесту.html#нет», напечатанный на консоли; мне кажется, что window.location.assign() ссылки присваивают window.location.href свойство после выполнения обработчика щелчка.

Протестировано в Firefox (v72.0.2) и Chrome (v91.0.4472.106)

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

1. Я узнал это окно. location.reload() работает как перезагрузка браузера.

2. Я считаю, что вам придется использовать window.location.assign('Test.html#no') , чтобы получить то же поведение, что и ваша ссылка.