Javascript firefox的10毫秒间隔
所以我制作了一个简单的计时器,格式如下:MM:SS.MS 您可以在此处查看[已删除]Javascript firefox的10毫秒间隔,javascript,intervals,stopwatch,Javascript,Intervals,Stopwatch,所以我制作了一个简单的计时器,格式如下:MM:SS.MS 您可以在此处查看[已删除] 它在chrome、IE等浏览器中运行良好,但在Firefox中,秒的长度是它的两倍 我看了一些其他的秒表,但我不明白。 最好的方法是什么?现在我有一个10毫秒的时间间隔来生成计时器 函数看起来是这样的,我希望它是可以理解的: var state = false; var msTimer = null; var min = document.getElementById("min"); var sec = do
它在chrome、IE等浏览器中运行良好,但在Firefox中,秒的长度是它的两倍 我看了一些其他的秒表,但我不明白。 最好的方法是什么?现在我有一个10毫秒的时间间隔来生成计时器 函数看起来是这样的,我希望它是可以理解的:
var state = false;
var msTimer = null;
var min = document.getElementById("min");
var sec = document.getElementById("sec");
var ms = document.getElementById("ms");
var minCount = 0;
var secCount = 0;
var msCount = 0;
document.onkeydown = function timer(e) {
if (!e) { e = window.event; }
if (e.keyCode == "32") {
if (state == false) {
state = true;
min.innerHTML = "00";
sec.innerHTML = "00";
ms.innerHTML = "00";
msTimer = window.setInterval(function() {
if (msCount == 99) {
msCount = 0;
secCount++;
// Minutes
if (secCount == 60) {
secCount = 0;
minCount++;
if (minCount <= 9)
{ min.innerHTML = "0" + minCount; }
else
{ min.innerHTML = minCount; }
}
// Seconds
if (secCount <= 9)
{ sec.innerHTML = "0" + secCount; }
else
{ sec.innerHTML = secCount; }
} else { msCount++; }
// Miliseconds
if (msCount <= 9)
{ ms.innerHTML = "0" + msCount; }
else
{ ms.innerHTML = msCount; }
// 1 Hour
if (minCount == 60) {
clearInterval(msTimer);
min.innerHTML = "N0";
sec.innerHTML = "00";
ms.innerHTML = "0B";
state = false;
minCount = 0;
secCount = 0;
msCount = 0;
}
}, 10);
} else if (state == true) {
state = false;
clearInterval(msTimer);
minCount = 0;
secCount = 0;
msCount = 0;
}
}
var state=false;
var msTimer=null;
var min=document.getElementById(“min”);
var sec=document.getElementById(“sec”);
var ms=document.getElementById(“ms”);
var minCount=0;
var secCount=0;
var msCount=0;
document.onkeydown=功能计时器(e){
如果(!e){e=window.event;}
如果(如keyCode==“32”){
if(state==false){
状态=真;
min.innerHTML=“00”;
sec.innerHTML=“00”;
ms.innerHTML=“00”;
msTimer=window.setInterval(函数(){
如果(msCount==99){
msCount=0;
secCount++;
//会议记录
如果(秒计数=60){
secCount=0;
minCount++;
如果(minCount您不应该依赖于计时器的精确间隔为10ms。如果您将每个计时器滴答声视为刷新屏幕计时器的请求,但从系统时钟或类似的东西获取测量值,则会更好
然后,不管机器(和JS实现)有多慢或多忙,您总会看到一个精确的计时器1——只是更新频率较低的计时器
1当然,这只能与系统时钟一样精确。如果Javascript可以访问高性能计时器,如.NET类或Java方法,那么最好使用它。您不应该依赖计时器的间隔正好是10毫秒。如果您将每个计时器滴答声视为刷新sc的请求,效果会更好重入定时器,但从系统时钟或类似的东西上进行测量
然后,不管机器(和JS实现)有多慢或多忙,您总会看到一个精确的计时器1——只是更新频率较低的计时器
1当然,这只能与系统时钟一样精确。如果Javascript可以访问高性能计时器,如.NET的类或Java的方法,则最好使用这种计时器。Javascript中的计时不能保证。10毫秒的间隔只有大约10毫秒,很可能每次都会延迟一点点Javascript中计时器的一种方法是在启动计时器时保存一个启动时间戳,然后每10毫秒左右计算一次启动时间戳和当前时间之间的差值,并用格式化值更新页面上的一个元素。Javascript中的计时是不保证的。10毫秒的间隔只会是大约10毫秒,最有可能的是每次都会延迟一点点。在Javascript中使用计时器的正确方法是在启动计时器时保存一个启动时间戳,然后每10毫秒左右计算一次启动时间戳与当前时间之间的差值,并用格式化值更新页面上的一个元素。请不要空问类似的问题每个人都会犯愚蠢的错误,这个问题和答案可能在将来对其他人有用。请不要空问这样的问题。每个人都会犯愚蠢的错误,这个问题和答案可能在将来对其他人有用