Ответ 1
ОБНОВЛЕНО
Вот что я делаю, чтобы перезагрузить Supersized с помощью динамических слайдов и предотвратить его сбой с batshit с новыми слайдами (у меня был случайный переход от слайда к другому, ускоряющийся)
создайте функцию в основном 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 файла (да, это взломать, но авторы плагинов не вернутся ко мне)
В неинфицированной версии script, версии 3.2.7 вам нужно будет:
1) удалите самые первые строки, где это происходит (строки 17/20 или около того)
$(document).ready(function() {
$('body').append('<div id="supersized-loader"></div><ul id="supersized"></ul>');
});
Обновление
2) добавить 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);
Все это используется для reset чередующихся интервалов анимации и предотвращает запуск script между кадром и другим. Я знаю, что это хаки, но эй.