Fancybox плохо работает с плагином Cycle — совет?

На нескольких моих страницах есть лайтбокс Fancybox и плагин jQuery Cycle. Обычно он работает нормально. Бывают случаи, когда я нажимаю на ссылку, которая создает лайтбокс, а затем, когда я его закрываю, плагин Cycle переходит и не возвращается. Когда это происходит, образуется огромный пробел в пространстве.

Я не уверен, что происходит, это не происходит в 100% случаев. Он спорадический. Я не уверен, является ли это проблемой одного браузера или нескольких браузеров, поскольку я смог воссоздать это в FF5 на двух разных машинах, но не воспроизвел это в других браузерах.

Любой совет?

Спасибо. Вот страница: http://www.ubhape2.com/artists/ (примечание: любая страница исполнителя имеет один и тот же заголовок и встречается на всех них. Fancybox — это любая ссылка, ссылающаяся на «Choosers»)


person L84    schedule 10.07.2011    source источник


Ответы (1)


Узнал ответ для тех, у кого похожие проблемы (этот ответ пришел с форумов Fancybox):

После дальнейших тестов я понял, в чем проблема, и это происходит, когда вы быстро и последовательно открываете и закрываете Fancybox, кажется, что анимация позади (цикл jQuery) создает нечто, называемое «наращиванием очереди анимации» (http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup), что происходит при взаимодействии с другими js-скриптами, обрабатывающими анимацию (Fancybox использует анимацию непрозрачности в оверлее).

Я бы сказал, что это не проблема fancybox и что вы должны сообщить о проблеме на форум плагинов цикла, однако (поскольку вы используете облегченную версию), вы можете отредактировать файл цикла js и внести следующие изменения, чтобы свести к минимуму влияние проблемы (по крайней мере, она не исчезнет с вашей страницы):

Замените строку 166:

var fn = function() {$n.animate(opts.animIn, opts.speedIn,
opts.easeIn, cb)};

с этим:

var fn = function() {$n.animate(opts.animIn, 1000, opts.easeIn, cb)};

и строка 167:

$l.animate(opts.animOut, opts.speedOut, opts.easeOut, function() {

с этим:

$l.animate(opts.animOut,{queue:false, duration: opts.speedOut},
opts.easeOut, function() { 
person L84    schedule 23.07.2011