Однако если перейти, немного поскроллить страницу, а потом перезагрузить ее (нажать F5 или в адресной строке выделить ссылку и нажать Enter), то якорь уже не будет срабатывать. Но если открыть эту ссылку в новой вкладке, то якорь сработает.
Как реализовать такой механизм средствами JS? Что это за событие(я)? Что это за проверка?
Вы можете смотреть на url при загрузке страницы, и если там есть нужный вам якорь, то смещать к нему, как-то так:
var urlHash = document.querySelector(window.location.hash);
var top = window.scrollY + urlHash.getBoundingClientRect().top;
window.scrollTo({ top: top });