ページに費やされた時間を測定するにはどうすればいいですか? 質問する

ページに費やされた時間を測定するにはどうすればいいですか? 質問する

ユーザーがページに費やす時間 (整数では秒単位、浮動小数点数では分単位) を計測したいと思います。ユーザーがページを離れたときにトリガーできるアンロード イベントがあることは知っています。しかし、ユーザーがすでにそのページに費やした時間を取得するにはどうすればよいでしょうか?

ベストアンサー1

受け入れられた回答は良いのですが、(代わりに)私は、ユーザーがウェブページに滞在した時間を計測する小さな JavaScript ライブラリに少し手を加えました。このライブラリには、ユーザーが実際にページを操作した時間をより正確に(ただし完璧ではない)追跡できるという利点もあります。ユーザーが別のタブに切り替えたり、アイドル状態になったり、ブラウザを最小化したりする時間は無視されます。受け入れられた回答で提案されている Google Analytics の方法には、(私が理解する限りでは)ドメインによって新しいリクエストが処理されたときにのみチェックするという欠点があります。前回のリクエスト時間と新しいリクエスト時間を比較し、それを「ウェブページで費やされた時間」と呼びます。誰かがページを閲覧しているか、ブラウザを最小化しているか、最後にページを読み込んでから 3 つの異なるウェブページにタブを切り替えたかなどは実際にはわかりません。

編集: 現在の API の使用法を含めるように例を更新しました。

編集2: プロジェクトがホストされているドメインの更新

https://github.com/jasonzissman/TimeMe.js/

使用例:

ページに以下を含めます:

<!-- Download library from https://github.com/jasonzissman/TimeMe.js/ -->
<script src="timeme.js"></script>
<script type="text/javascript">
TimeMe.initialize({
    currentPageName: "home-page", // page name
    idleTimeoutInSeconds: 15 // time before user considered idle
});
</script>

時間を自分でバックエンドに報告したい場合:

xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","ENTER_URL_HERE",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds();
xmlhttp.send(timeSpentOnPage);

TimeMe.js は、Web ソケット経由でのタイミング データの送信もサポートしているため、イベントに完全な http リクエストを強制する必要はありませんdocument.onbeforeunload

おすすめ記事