Если пользователь переходит на другую страницу, мы можем предположить, что он не бездействует, поэтому проблема сводится к тому, «активен ли пользователь на текущей странице?»
Вы можете установить тайм-аут в onMouseMove
событии тела. Когда истекает время ожидания, вы знаете, что пользователь неактивен в течение некоторого периода времени. Если это не так, и вы получаете onMouseMove
до истечения времени ожидания, вы просто очищаете время ожидания.
Вы также можете иметь дело с onKeyPress
таким же образом.
Это может быть немного сложнее, если пользователь откроет много вкладок на вашей странице, но я бы просто использовал localStorage
для некоторого способа связи между этими вкладками.