Theo như tôi biết không có cách nào để thực sự khắc phục điều này, khác hơn là làm cho mã của bạn ít tài nguyên hơn.
Chrome có vẻ là trình duyệt nhanh nhất, nhưng thường FF không xa phía sau, nhưng IE vẫn chậm. Tùy thuộc vào phương thức hiển thị, canvas, svg hoặc webGL, nó cũng phụ thuộc rất nhiều vào phần cứng cục bộ của bạn vì nó sử dụng client cho hầu hết mọi thứ và kết xuất webGL phức tạp cần GPU mạnh để đạt được khung hình tốt.
Có nhiều cách để đo tốc độ khung hình khi đang di chuyển và thay đổi hoạt ảnh của bạn cho phù hợp.
Đây là một ví dụ rất đơn giản để đo tốc độ khung hình.
function step(timestamp) {
var time2 = new Date;
var fps = 1000/(time2 - time);
time = time2;
\t
document.getElementById('test').innerHTML = fps;
window.requestAnimationFrame(step);
}
var time = new Date(), i = 0;
window.requestAnimationFrame(step);
<div id="test"></div>
Đây chỉ là một biện pháp ngay lập tức mà không phải là chính xác, bạn có thể muốn một cái gì đó mà các biện pháp trên một thời gian để có được một khung hình chính xác hơn cho trình duyệt được sử dụng.
Cũng lưu ý đối số timestamp
, trong đó requestAnimationFrame
là dấu thời gian có độ chính xác tối thiểu 1 mili giây, cũng có thể được sử dụng để xác định tốc độ của hoạt ảnh và bất kỳ độ trễ trình duyệt nào.
Cách để giải quyết điều này là làm cho bất kỳ mã nào bạn đang chạy từ cuộc gọi lại chạy nhanh. Làm thế nào để làm điều đó là không thể nói mà không nhìn thấy mã số ... –