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 で特殊文字のファイル名やディレクトリを削除する方法

推薦する

nginx で gzip 圧縮を実装してウェブサイトの速度を向上させる方法

目次gzip 圧縮を使用する理由は何ですか? nginxはgzipを実装するgzip処理nginx ...

MySQLクエリ速度を最適化する方法

前の章では、高性能な MySQL に不可欠な、最適化されたデータ型の選択方法とインデックスの効率的な...

nginxフロー制御とアクセス制御の実装

nginx トラフィック制御レート制限は非常に便利ですが、Nginx では誤解され、誤って設定される...

HTML テーブル マークアップ チュートリアル (41): テーブル ヘッダーの幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、ヘッダーの幅と高さはコンテンツに応じて自動的に調整されます。ヘッダーの幅と高さを手動...

Webpack パッケージング CSS 背景画像パスの問題に対する完璧なソリューション

vue コンポーネントのスタイル タグ内には、背景画像を使用する次の CSS コードがあります。 背...

React+Koa によるファイルアップロードの実装例

目次背景サーバーの依存関係バックエンド構成クロスドメインバックエンド構成の静的リソースアクセスではk...

ウェブデザイン:大量の素材の正確な配置と使用

3回の暗記により、大量の資材の正確な場所と目的を記憶でき、その使いやすさが向上します。 これは単なる...

テキストエリアタグはサイズ変更できず、マウスでドラッグすることもできません

テキストエリアタグのサイズは不変ですコードをコピーコードは次のとおりです。 <textarea...

製品を選択した後、右下隅に√記号を表示するための純粋なCSS

おすすめの記事: CSS 疑似クラスの右下隅をクリックすると、選択を示すチェックマークが表示されます...

Linux システムで Vim を使用してリモート ファイルを読み書きするコマンドの詳細な説明

vim の動作モードを設定する (一時的) :set (モード情報) :set nu — 行番号を表...

Centos7 に Docker をインストールします (2020 の最新バージョンが利用可能、コピーして貼り付けるだけ)

操作については、こちらの公式ドキュメントを参照してください。インストール1. 古いバージョンの do...

証明書を使用してリモート Docker サーバーに接続する方法

目次1. スクリプトを使用してDockerのTLSを暗号化する2. Dockerの設定を変更してリモ...

Ubuntu 16.04にJenkinsをインストールするための詳細な手順

1. 前提条件JDKがインストールされましたecho $PATHソフトリンクを作成し、JDKのインス...

シンプルなウェブ計算機を実装するJavaScript

背景私は新しいプロジェクト チームに配属されたので、プロジェクトでは js を使用する必要があります...

vue-routeルーティング管理のインストールと設定方法

導入Vue Router 、 Vue.jsの公式ルーティング マネージャーです。 Vue.jsのコア...