Необходимо проверить, была ли ссылка нажата ранее, или удалить прослушиватель события прокрутки. Я думаю, что последнее является лучшим решением, так как слушатели событий прокрутки запускаются довольно часто, и если вам это нужно только один раз, это может привести к дополнительным издержкам.
// Method 1
var didClick = false;
window.addEventListener('scroll', () => {
window.onscroll = slideMenu;
if (window.scrollY > elementTarget.offsetTop) {
const scrolledPx = (window.scrollY - elementTarget.offsetTop);
if (scrolledPx > 100 && didClick === false) {
const link = document.getElementById('2');
link.click();
didClick = true;
}
}
}
// Method 2
function myScrollHandler(){
window.onscroll = slideMenu; // You may want to move this elsewhere
if (window.scrollY > elementTarget.offsetTop) {
const scrolledPx = (window.scrollY - elementTarget.offsetTop);
if (scrolledPx > 100 && didClick === false) {
const link = document.getElementById('2');
link.click();
window.removeEventListener('scroll', myScrollHandler); // ????
}
}
}
window.addEventListener('scroll', myScrollHandler);