Оценка по времени в JavaScript в Firefox

Итак, у меня есть эта проблема,

Для функции оценки, которая у меня увеличивается на одну секунду, она работает в Google Chrome (версия 53.0.2785.116 м), Microsoft Edge (25.10586.0.0), однако не работает в Firefox (версия 49.0.1). Вероятно ли это из-за различий в формате даты?

Приведенный ниже код является моей оценкой времени по холстовой игре. Функция получает дату с начала выполнения и увеличивается на 1 за каждую секунду.

Ключевым моментом является то, что счет начинается с 0, увеличивается на 1 в секунду и достигает 100 в браузере.


Ищите какое-либо решение, которое бы работало на Firefox - на данный момент "оценка" выглядит статичной и не учитывается, в отличие от Google Chrome и Edge.

Есть идеи? - Новый для JS. Заранее спасибо за помощь.

var start = new Date().getTime(),
  score = '0.1';

var interval = window.setInterval(function() {
  var time = new Date().getTime() - start;
  
  score = Math.floor(time / 1000);
  
  if(score === 100) { 
    window.clearInterval(interval); 
    if(!alert("You win!\nPress 'OK' to play again")){
        window.location.reload();
    } 
  }

  document.getElementById('displayScore').innerHTML = score += '.00 Score';
});
<div id="displayScore"></div>

1 ответ

Решение

Вам нужно передать задержку в вашем setIntetval, потому что если вы не используете firefox, по умолчанию принимается значение 10 (миллисекунд)

задержка Время, в миллисекундах (тысячных долях секунды), таймер должен задерживать между выполнением указанной функции или кода. Если этот параметр меньше 10, используется значение 10.

Это заставляет его работать каждые 10 мс, это очень низкое значение, поэтому, когда вы делаете вычисления, как score = Math.floor(time / 1000); результирующее значение приближается к нулю и ваша переменная никогда не увеличивается

Другие вопросы по тегам