Попытка рандомизировать интервал новостной ленты в jQuery - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть тикер новостей на основе jQuery, который использует заданный интервал в миллисекундах для управления задержкой между раскрытием каждого нового раздела текста. Я хотел бы рандомизировать задержку, чтобы она более точно имитировала, как будет выглядеть новостная лента в реальном времени.

Я попытался поэкспериментировать с некоторым Math.random javascript, где есть параметр newsTickerInterval, но JS не является моим родным языком, и я не могу заставить его работать.

Вот функция jQuery, которую мой скроллер использует для настройки отображения:

$(function () {         
$(".demo2").bootstrapNews({
        newsPerPage: 4,
        autoplay: true,
        pauseOnHover: true,
        navigation: false,
        direction: 'down',
        newsTickerInterval: 3000,
        onToDo: function () {
            //console.log(this);
        }
    });       
});

Любые подсказки или предложения будутс благодарностью!

1 Ответ

1 голос
/ 04 ноября 2019

Вместо использования newsTickerInterval создайте функцию getNewsTickerDelay, которая генерирует случайный интервал задержки, и при необходимости вызывайте ее с помощью setTimeout.

$(function () {         
    $(".demo2").bootstrapNews({
        newsPerPage: 4,
        autoplay: true,
        pauseOnHover: true,
        navigation: false,
        direction: 'down',
        getNewsTickerDelay: function() {
            var minimumInterval = 2000;
            var maximumInterval = 5000;
            var additionalInterval = Math.floor(
                Math.random() * (maximumInterval - minimumInterval)
            );

            return minimumInterval + additionalInterval;
        },
        onToDo: function () {
            //console.log(this);
        }
    });       
});

Итак, каждый раз, когда вызывается ваш тайм-аутустановите другую со случайной задержкой, используя getNewsTickerDelay

- EDIT -

Как указано @Barmar, вам может потребоваться настроить реализацию плагина в вашем случаеи реализуйте его внутренний метод animate, чтобы использовать заданный случайный интервал вместо фиксированного значения. Вам просто нужно заменить self.options.newsTickerInterval в JS этого плагина на self.options.getNewsTickerDelay(). Это если вы хотите изменить реализацию плагина.

...