Я не увидел ссылку на сайт с ошибкой в вашем вопросе, но увидел URL-адрес в вашем профиле и зашел туда, чтобы узнать, может ли это быть тем.Похоже, что это ...
IE печально известен неправильными номерами строк в своих ошибках JavaScript.Ошибка на самом деле в строке 125:
function onBefore(curr, next, opts, fwd) {
// If the page isn't loading or refreshing - initCycle == false (fixes auto unbinding of slide opts on load)
// If is last slide and next slide is fwd direction go to next project instead of wrapping cycle
if(opts.currSlide + 1 == opts.slideCount && fwd && !initCycle){
opts.end(opts); // <-- this line is failing b/c the end function is null
window.location = $('#next').find("a").attr("href");
}
// If is first slide, and next slide is bkwd direction go to prev project instead of wrapping cycle
else if(opts.currSlide + 1 == 1 && !fwd){
opts.end(opts); // <-- this also fails for the same reason
window.location = $('#prev').find("a").attr("href");
}
}
Функция end
в объекте ops
равна нулю, и именно в этом и заключается ошибка.Интересно, что я также проверил в FF, и это также верно там, но в этом случае он восстанавливается более изящно, чем IE.
Из остального кода не совсем понятно, как функция onBefore
вызывается.Похоже, это может быть сам плагин цикла.В любом случае, где бы ни происходил этот вызов, объект opts
, по-видимому, не заполняется всеми данными, необходимыми для вашей функции.
Обновление:
Я взглянул на код подключаемого модуля цикла и opts.end
- это обратный вызов, который должен предоставить пользователь подключаемого модуля.Таким образом, решение вашей проблемы - либо предоставить свой собственный обратный вызов при создании объекта цикла (строка 101 в вашем файле js), либо удалить строки в вашем коде, которые вызывают функцию end
.
Обновление в ответ на комментарий ОП ниже:
После более тщательной проверки ваш код будет фактически выполнять то, что вы хотите, без необходимости вызывать обратный вызов end
, чтобы вы могли безопасно удалить эти строки.Плагин запускает ваш обратный вызов onBefore
до того, как он выполнит анимацию.А поскольку вы перезагружаете новый URL-адрес в браузере при перемещении назад от 1-го слайда или вперед от последнего, он даже не попадает в анимацию исчезновения, которая является вашей целью.
Однако, чтобы ответить на ваш вопросо том, как добавить обратный вызов end
к исходному объекту цикла, вы сделаете это точно так же, как для onBefore
и onAfter
.Создайте функцию с любым кодом, который вы хотите выполнить, и затем включите end: yourFuncName
в хэш объекта, переданный плагину.Другой способ остановить плагин цикла - $(selector).cycle('stop');
.Но опять же, ничего из этого не нужно в вашем случае.Просто уберите звонки на end
и все будет в порядке.