Thuộc tính timeStamp
của giao diện Event
cho biết thời điểm diễn ra một sự kiện nhất định.
Trong các phiên bản Chrome trước phiên bản 49, giá trị timeStamp
này được biểu thị dưới dạng DOMTimeStamp
, là một số nguyên mili giây kể từ thời gian bắt đầu của hệ thống, tương tự như giá trị do Date.now()
trả về.
Kể từ Chrome 49, timeStamp
là một giá trị DOMHighResTimeStamp
. Giá trị này vẫn là số mili giây, nhưng có độ phân giải vi giây, nghĩa là giá trị sẽ bao gồm một thành phần thập phân. Ngoài ra, thay vì giá trị tương ứng với thời gian bắt đầu, giá trị này tương ứng với PerformanceTiming.navigationStart
, tức là thời điểm người dùng chuyển đến trang.
Bạn có thể thấy lợi ích của độ chính xác bổ sung của dấu thời gian trong các ví dụ sau:
Những điều cần cân nhắc về trình duyệt và phiên bản cũ
Nếu mã hiện tại của bạn so sánh các giá trị Event.timeStamp
từ hai sự kiện, thì bạn không cần phải điều chỉnh mã của mình do sự thay đổi sang DOMHighResTimeStamp
. Hơn nữa, trên các trình duyệt hỗ trợ DOMHighResTimeStamp
, mã hiện có của bạn sẽ được hưởng lợi từ độ chính xác tăng lên trong micro giây, cũng như việc DOMHighResTimeStamp
được đảm bảo sẽ tăng một cách đơn điệu, bất kể đồng hồ hệ thống có thay đổi trong quá trình thực thi trang web hay không.
Nếu thay vì so sánh hai giá trị Event.timeStamp
, mã của bạn cần xác định thời gian xảy ra sự kiện, thì giá trị DOMHighResTimeStamp
mới có thể được so sánh trực tiếp với performance.now()
.
Và nếu cần chuyển đổi Event.timeStamp
thành một số tuyệt đối bằng mili giây kể từ thời gian bắt đầu của hệ thống, bạn có thể lấy giá trị đó bằng cách thêm DOMHighResTimeStamp
vào performance.timing.navigationStart
.
Trong cả hai trường hợp đó, DOMTimeStamp
và DOMHighResTimeStamp
hoạt động theo cách khác nhau, nhưng bạn có thể đơn giản hoá mã trên nhiều trình duyệt bằng cách sử dụng hàm chuyển đổi này, do Majid Valipour cung cấp. Phương thức này lấy đối tượng Event
làm tham số và trả về một giá trị giống như DOMHighResTimeStamp
, sẵn sàng để so sánh với performance.now()
hoặc thêm vào performance.timing.navigationStart
.