setTimeout не работает периодически на мобильном Safari? - PullRequest
0 голосов
/ 07 июня 2018
$('.btn-activate').on('click touchstart', function() {
        $('.discount').each(function() {
            var $this = $(this);
            $({ countNum: parseInt($this.html())}).animate({
                    countNum: couponPercentage
                },
                {
                    duration: 1000,
                    easing:'linear',
                    step: function() {
                        $this.html(Math.floor(this.countNum) + '% OFF');
                    },
                    complete: function() {
                        $this.html(Math.floor(this.countNum) + '% OFF');
                        refreshIntervalId = setInterval(function() {
                            if ($this.css('visibility') == 'hidden') {
                                $this.css('visibility', 'visible');
                            } else {
                                $this.css('visibility', 'hidden');
                            }
                        }, 200);

                        setTimeout(function(){
                            clearInterval(refreshIntervalId);
                            if ($this.css('visibility') == 'hidden') {
                                $this.css('visibility', 'visible');
                            }
                        }, 2000);
                    }
                });
        });
    })

В блоке complete предпринимается попытка мигания.Это работает, но в Safari Mobile бывают ситуации, когда setTimeout не работает, потому что мигающая анимация не останавливается.

1 Ответ

0 голосов
/ 07 июня 2018

Очевидно, это было связано с использованием .on('click touchstart',...).

При нажатии пользователем кнопки происходит двойной запуск.После удаления избыточного touchstart я больше не могу копировать это.

...