ОБНОВЛЕНО
Вот что я делаю, чтобы перезагрузить Supersized с динамическими слайдами и не дать ему сойти с ума от новых слайдов (у меня был случайный прыжок с одного слайда на другой, ускорение)
создайте функцию в вашем главном файле JS, которая будет вызываться для обновления слайдов:
function start_supersized(slides) {
$('#supersized-loader').empty().remove();
$('#supersized').empty().remove();
$('#hzDownscaled').empty().remove();
$('body').append('<div id="supersized-loader"></div><ul id="supersized"></ul>');
$.supersized({slides: slides}); // add your other SZ options here
};
все, что мы здесь делаем, это очищаем и удаляем элементы DOM, которые SZ добавляет в тело нашего документаи снова инициализировать плагин.
Затем мы можем вызвать эту функцию с массивом слайдов в качестве аргумента, то есть:
var new_slides = [{image: "/img/slide1.png"}, {image: "/img/slide2.png"}];
start_supersized(new_slides);
Это еще не все.Нам нужно настроить пару строк внутри суперразмерного файла JS (да, это взлом, но авторы плагинов не вернутся ко мне)
В неуменьшенной версии скрипта, версии 3.2.7 вам придется:
1) удалить самые первые строки, где это происходит (строки 17/20 или около того)
$(document).ready(function() {
$('body').append('<div id="supersized-loader"></div><ul id="supersized"></ul>');
});
update
2) add var slideshow_intervals = [];
этот массив будет отслеживать все идентификаторы интервала, которые будет создан плагином
3) найти функцию
base._start = function() {
(вокруг строки 124) и добавьте в начало функции эту строку:
jQuery.each(slideshow_intervals, function(i, e) {
clearInterval(e);
});
4) везде, где есть вызов setInterval()
, добавьте возвращаемое значение в наш массив, например так:
slideshow_intervals.push(vars.slideshow_interval);
Все это используется для сброса увеличенных интервалов анимации и предотвращения ускорения сценария между кадром и другим.Я знаю, что это немного глупо, но эй.