Vue ページ監視ユーザープレビュー時間機能実装コード

Vue ページ監視ユーザープレビュー時間機能実装コード

最近のビジネスでは、オンライン トレーニング システムが特定のオンライン プレビュー ページに対するユーザーのプレビュー時間を把握する必要があるという要件があります。当初は、Vue ページのライフサイクル機能でmounteddestroyedを使用して、開始とクリアのタイミングのロジックを追加し、バックグラウンド インターフェイスを通じて対応するトレーニング マテリアルの時間データを報告することで目標を達成することを考えました。

アイデアを念頭に置いて、具体的なコードの計画を開始できます。

開始と終了のタイミング関数を定義する

dataでは、変数を介してタイマーを定義し、 this.timerを介してどこからでもアクセスできるようにしています。これは、後でページが破棄されるときにタイマーをクリアするのに便利です。

duration 、0 に初期化される期間のカウント変数です。単位は、タイマーの 2 番目の時間間隔パラメータに基づいて、秒またはミリ秒として決定できます。

エクスポートデフォルト{
  データ() {
    戻る {
      タイマー: null、
      期間: 0
    }
  },
  メソッド: {
    スタートタイマー() {
      this.timer = setInterval(() => {
        console.log('視聴時間: ', this.duration)
        this.duration++
      }, 1000)
    },
    ストップタイマー() {
      クリア間隔(this.timer)
      this.updateViewHistory() // レポートデータインターフェース},
    ビュー履歴の更新(){
    // インターフェイス ロジック コードを報告します....
    }
  }
}

startTimer関数では、表示される時間が正しいことを確認するために、 duration変数を出力します。

電話をかける方法と場所

開始メソッドと終了メソッドを定義した後、それらをどこで呼び出すかを考え始める必要があります。プレビュー ページのコンテンツは一意ではないため、詳細を取得するためにマテリアルのidに基づいてレンダリングされます。 mountedライフサイクルにstartTimerを記述すると、異なるidを持つページにアクセスしたときに、必要なロジックを正常に切り替えることができなくなります。

そこで、異なるページをプレビューするときに開始ロジックと終了ロジックを切り替えるために、ルート内のidパラメータをリッスンすることを選択しました。

時計:
    $ルート: {
      即時: true、
      ハンドラ(to, from) {
        if (to.params.id) this.trainingId = to.params.id
        this.startTimer()
      }
    }
  }

開始タイミングメソッドが呼び出され、最終的にconsole logに現在の期間の出力が表示されます。

次に、最後のステップとして、 stopTimer関数を呼び出してタイマーをクリアし、ページが破棄されたときにデータを報告する必要があります。

プレビュー ページはwindow.openを通じて開かれる独立したタブであるため、 destroyedライフサイクル関数を通じて監視されます。ルーティング メソッドを介してジャンプが行われた場合、ページを離れるときに、 destroyed介してリッスンする前に、そのページを破棄する必要があります。

マウント() {
    window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))
  },
  破壊された() {
    window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e))
  }

windowリスナーメソッドを介して間接的にstopTimerメソッドを呼び出す

メソッド: {
    beforeunloadHandler (e) {
      this.stopTimer()
    }
}

独自のロジックを分離して、 destroyed内の他のロジックと混ざらないようにするために、 destroyed内でstopTimerメソッドを直接呼び出さないのはなぜかと疑問に思う人もいるかもしれません。コードの可読性と保守性を向上させます。

コードを書くときは、機能を実装するだけでなく、さらに考える必要があります。これが一般人と専門家の違いです。

これで、Vue ページのユーザー プレビュー時間の監視に関するこの記事は終了です。Vue のユーザー プレビュー時間の監視に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはルートの変更を監視し、App.vueファイル内のページを更新します。
  • Vueはページの更新と閉じる機能を監視します
  • vueアプリ。vueのパブリックコンポーネントは値を変更して他のコンポーネントまたは.vueページのリスニングをトリガーします。
  • Vueがポップアップしたら、携帯電話のリターンキーを押してポップアップ機能を閉じます(ページはジャンプしません)
  • vue.js を使用してページ コンポーネントのスクロール イベントを監視する方法
  • vue-router を使用してページを切り替えるときのスクロールバーの位置とスクロール リスナー イベントの詳細な説明

<<:  MySQL 5.7.19 winx64 無料インストールバージョン設定チュートリアル

>>:  Linux で特殊文字のファイル名やディレクトリを削除する方法

推薦する

MySQL 匿名ログインでデータベースを作成できない問題の解決方法

よくある質問ユーザー ''@'localhost' によるデータベー...

MySQLログに関する知識のまとめ

目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...

MySQL のテーブルリターンとインデックスカバレッジの例の詳細な説明

目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...

vscode dockerプラグインのdocker.socket権限問題を解決する

解決策: システム内のすべての .vscode 関連プロセスを終了します (または、remote-s...

VirtualBox は CentOS7 仮想マシンと拡張ツールをインストールします (画像とテキスト)

コンピュータシステム: win7この記事は主に写真に基づいており、多くの写真が含まれていますCent...

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...

Ubuntu のインストール グラフィック ドライバーと Cuda チュートリアル

目次1. 元のドライバーをアンインストールする2. 新しいグラフィックカードドライバーをダウンロード...

虫眼鏡の詳細のJavaScript実装

目次1. レンダリング2. 実施原則3. まとめ1. レンダリング 2. 実施原則幅と高さが等しい拡...

Ubuntu 19.04 インストール チュートリアル (画像とテキストの手順)

1. 準備1.1 VMware 15 をダウンロードしてインストールするダウンロード リンク: h...

ゲームの Node.JS バージョンを作成する方法

目次概要ビルドプロセス関連APIリードライン基本的な使い方チョーククリア手順に関する追加情報完全なコ...

Linux のハードリンクとソフトリンクの区別

Linux には、2 種類のファイル接続があります。1 つは Windows のショートカットに似て...

MySQL サーバー ログイン エラー ERROR 1820 (HY000) の解決方法

障害サイト: MySQL サーバーにログインし、どのコマンドを実行してもこのエラーが発生します my...

iframe を介してフレームセットを本体に配置する

フレームセットと本文は同じレベルにあるため、本文にフレームセットを配置することはできません。まずペー...

mysql charset=utf8 本当に意味が分かりますか

1. まずテーブル作成ステートメントを見てみましょう テーブル学生を作成( sid int 主キー ...

Vue3.0はチェックボックスコンポーネントのカプセル化を実装します

この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコード...