пара идей, не проверял:
1. держать переменную-флаг, которую выключать на время, при запуске scrollIntoView():
let isScrollIgnored = false;
const myScroll = () => {
if (isScrollIgnored) return;
// ...
isScrollIgnored = true;
setTimeout(() => isScrollIgnored = false, 500);
someElement.scrollIntoView();
// ...
};
window.addEventListener( 'scroll', myScroll );
2.
[upd.: нерабочий вариант] проверять свойство
isTrusted
у события scroll: может, когда оно вызвано не мышкой, а scrollIntoView(), то становится
false
? Тогда:
const myScroll = event => {
const { isTrusted } = event;
if (!isTrusted) return;
// ...