Я не увидел ссылку на сайт с ошибкой в вашем вопросе, но увидел 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
имеет значение NULL, и вот где ошибка. Интересно, что я также проверил FF, и это тоже верно, но, похоже, в этом случае он восстанавливается более изящно, чем IE.
Из остальной части кода не совсем понятно, как вызывается функция onBefore
. Похоже, это может быть сам плагин цикла. В любом случае, где бы ни происходил этот вызов, кажется, что объект opts
не заполняется всеми данными, которые необходимы вашей функции.
Обновление:
Я взглянул на код плагина цикла, и opts.end
- это обратный вызов, который должен предоставить пользователь плагина. Таким образом, решение вашей проблемы состоит в том, чтобы либо предоставить свой собственный обратный вызов при создании объекта цикла (строка 101 в вашем js-файле), либо удалить строки в вашем коде, которые вызывают функцию end
.
Обновление в ответ на комментарий OP ниже:
При более внимательном рассмотрении ваш код действительно будет делать именно то, что вы хотите, без необходимости вызывать end
обратный вызов, поэтому вы можете безопасно удалить эти строки. Плагин запускает ваш onBefore
обратный вызов до того, как выполнит какие-либо анимации. И поскольку вы перезагружаете новый URL-адрес в браузере при движении назад с 1-го слайда или вперед с последнего, он даже не дойдет до анимации затухания, что и является вашей целью.
Однако, чтобы ответить на ваш вопрос о том, как добавить обратный вызов end
к исходному объекту цикла, вы должны сделать это точно так же, как и для onBefore
и onAfter
. Создайте функцию с любым кодом, который вы хотите выполнить, а затем включите end: yourFuncName
в хэш объекта, переданный в плагин. Другой способ остановить плагин цикла - $(selector).cycle('stop');
. Но опять же, в вашем случае ничего из этого не нужно. Просто удалите вызовы end
, и все будет в порядке.
person
Bryan
schedule
21.08.2010