在 Web 开发中,检测空闲时间对于优化用户体验至关重要。空闲时间定义为用户不活动或 CPU 使用率最低的时间段,它提供了预取或预加载内容的机会,从而减少页面加载时间并增强响应能力。
要在 Vanilla JavaScript 中启用空闲时间检测,请使用以下方法:
var inactivityTime = function () { var time; window.onload = resetTimer; // DOM Events document.onmousemove = resetTimer; document.onkeydown = resetTimer; function logout() { alert("You are now logged out.") //location.href = 'logout.html' } function resetTimer() { clearTimeout(time); time = setTimeout(logout, 3000) // 1000 milliseconds = 1 second } };
定义 inactivityTime 函数后,在需要的地方初始化它(例如 onPageLoad):
window.onload = function() { inactivityTime(); }
您可以通过添加更多 DOM 事件来进一步自定义事件侦听器,包括:
document.onload = resetTimer; document.onmousemove = resetTimer; document.onmousedown = resetTimer; // touchscreen presses document.ontouchstart = resetTimer; document.onclick = resetTimer; // touchpad clicks document.onkeydown = resetTimer; // onkeypress is deprectaed document.addEventListener('scroll', resetTimer, true); // improved; see comments
或者,使用动态注册事件array:
window.addEventListener('load', resetTimer, true); var events = ['mousedown', 'mousemove', 'keypress', 'scroll', 'touchstart']; events.forEach(function(name) { document.addEventListener(name, resetTimer, true); });
请注意,如果滚动发生在可滚动元素内,则 window.onscroll 将不会触发。为了解决这个问题,请在 window.addEventListener('scroll', resetTimer, true) 中包含第三个参数以在捕获阶段捕获事件。
以上是如何检测 JavaScript 中的空闲时间以优化内容预取和预加载?的详细内容。更多信息请关注PHP中文网其他相关文章!