0

所以我有这个问题,

对于我每秒增加 1 的分数函数,它适用于 Google Chrome(版本 53.0.2785.116 m)、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>

4

1 回答 1

1

您需要在 setIntetval 中传递延迟,因为如果您不这样做,firefox 会假定默认值为 10(毫秒)

延迟时间,以毫秒(千分之一秒)为单位,计时器应在指定函数或代码的执行之间延迟。如果此参数小于 10,则使用值 10。

这使得它每 10 毫秒运行一次,它是一个非常低的值,所以当你进行计算时, score = Math.floor(time / 1000);结果值接近于零,你的 var 永远不会增加

于 2016-10-02T02:55:14.607 回答