Я создаю сайт fullpage.js, где мне нужно, чтобы слайды прокручивались для просмотра на конкретном слайде. Так:
1
Х2Х
3
4
Где X2X - это 3 слайда, я хочу приземлиться на 2-й, чтобы пользователь мог идти влево или вправо.
Я использую OnLeave для вызова silentMoveTo, но все, что я делаю, похоже, не действует:
onLeave: function(origin, destination, direction) {
var params = {
origin: origin,
destination: destination,
direction: direction
};
//after leaving first section
console.info("leaving...");
if (origin.index == 0 && direction == "down") {
// moves the slides to the 2nd slide
console.info("fire after 1?");
fullpage_api.silentMoveTo(1, 1);
}
}
Но silentMoveTo не работает. Вот CodePen https://codepen.io/thetwopct/pen/bZwyRw
Любые советы о том, что я делаю неправильно?
Спасибо! Я поиграл с этим, поставив 2,1, похоже, он сломался с ошибкой JS - RangeError: превышен максимальный размер стека вызовов.
Вам нужно найти правильную точку, чтобы вызвать это, в настоящее время кажется, что выполнение этого скользящего действия запускает событие, а затем хочет снова сдвинуть его … как я уже сказал, if (origin.index == 0 && direction == "down"), вероятно, также нуждается в изменении.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Не нужно было делать это через OnLeave/silentMoveTo, просто добавьте класс active к слайду, который я хотел показать.
Согласно https://github.com/alvarotrigo/fullPage.js/issues/522
Это способ! :)
Похоже, разделы индексируются не с 0, а с 1…? Итак, вам нужно
fullpage_api.silentMoveTo(2, 1);перейти ко 2-му слайду во 2-м разделе. (Это делает скольжение, как и предполагалось, но вызывает постоянное срабатывание события onLeave, поэтому вам, возможно, придется также изменитьorigin.index == 0, что, вероятно, нужно проверить на == 1 тогда.)