#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')
, чтобы получить то же поведение, что и ваша ссылка.