Если надо учитывать сколько времени пользователь просматривал страницу, то наверно надо учитывать только то время, когда вкладка была активна. Если пользователь смотрел другую вкладку, минимизировал окно, переключился на другую задачу, то это не то время, что он смотрел страницу.
Что бы учесть все эти варианты надо использовать событие visibilitychange и смотреть когда вкладка становится активной и когда становится невидимой.
https://developer.mozilla.org/en-US/...tychange_event
Ну и если надо послать запрос на сервер с указанием сколько времени пользователь провел на странице, то это можно по событию unload послать запрос с помощью navigator.sendBeacon
https://developer.mozilla.org/en-US/...tor/sendBeacon