Javascript 设置超时不';在移动Safari上不间断工作?

Javascript 设置超时不';在移动Safari上不间断工作?,javascript,mobile-safari,Javascript,Mobile Safari,在complete块中,尝试实现闪烁动画。这是可行的,但在Safari Mobile上,有时设置超时似乎不起作用,因为闪烁的动画没有停止。显然这与使用.on('单击touchstart',…)有关 当用户点击按钮时,会发生某种双重触发。删除冗余的touchstart后,我无法再复制此操作。不确定此操作是否有用。您正在将refreshIntervalId设置为全局变量。如果在其他地方使用refreshIntervalId,可能会导致问题。改为像var refreshIntervalId=…那样声明

complete
块中,尝试实现闪烁动画。这是可行的,但在Safari Mobile上,有时设置超时似乎不起作用,因为闪烁的动画没有停止。

显然这与使用
.on('单击touchstart',…)
有关


当用户点击按钮时,会发生某种双重触发。删除冗余的
touchstart
后,我无法再复制此操作。

不确定此操作是否有用。您正在将
refreshIntervalId
设置为全局变量。如果在其他地方使用
refreshIntervalId
,可能会导致问题。改为像
var refreshIntervalId=…
那样声明它,以便它在函数中起作用
$('.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);
                    }
                });
        });
    })