我正在尝试创建一个像秒表一样工作的对象,但 Chrome 和Firefox浏览器之间存在100毫秒的差异。以下代码和测试在 Safari 和 Chrome 中均失败,但在Firefox中传递。
您可以在多个浏览器中运行此SAMPLE并观看测试通过或失败。该示例位于JSBIN上,因此您也可以对其进行代码更改。
我已经构建了一个 Timer 对象,它基本上像秒表一样工作:
function Timer() {
this.interval = null;
this.time = 0;
}
Timer.prototype.start = function () {
var self = this;
this.interval = setInterval(function () {
self.time += 100;
}, 100);
};
Timer.prototype.stop = function () {
clearInterval(this.interval);
};
此测试启动和停止计时器。它在Chrome中失败但传入FireFox。
describe("Timer", function () {
it("should stop and record time accurately", function (done) {
var timer = new Timer();
timer.start();
setTimeout(function () {
expect(timer.time).toEqual(600);
done();
}, 600);
});
});
答案 0 :(得分:0)
如果是webkit,只需在对象构造函数中将this.time
设置为100
,如果是gecko,则设置为0
。