Не думаю, что вы можете определить причину прокрутки. Событие прокрутки указывает только на то, что окно прокручивается, а не , почему прокручивает.
Но, возможно, вы приостанавливаете прослушиватель события прокрутки или устанавливаете флаг перед вызовом window.scrollTo()
из своего кода. Здесь, в Safari, если вы используете scrollTo()
, событие прокрутки срабатывает только один раз, независимо от того, сколько вы прокручиваете, так что вы могли бы сделать что-то вроде этого:
// somewhere in your code...
isCodedScrollEvent = true;
window.scrollTo(0, 200);
// elsewhere in your code...
function scrollListener(event) {
if( isCodedScrollEvent ) {
// event was caused by code, so handle it differently
// and then flip the flag back to false, so the next
// will be handled normally again
isCodedScrollEvent = false;
} else {
// event was caused by user
}
}
Это не красиво, но должно работать