亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
なぜ自動ログアウトを気にする必要があるのですか?
ステップ1:追跡ロジックを?qū)g裝します
ステップ2:アクティベーションの追跡
ステップ3:パフォーマンスを改善します
ボーナス:それを再生しましょう!
それはラップです!

非アクティブユーザーの検出

Apr 13, 2025 am 11:08 AM

非アクティブユーザーの検出

ほとんどの場合、ユーザーがアプリケーションに積極的に関與しているのか、一時的に非アクティブであるかを本當(dāng)に気にしません。非アクティブで、つまり、おそらく彼らは水を飲むために立ち上がった、またはより可能性の高いタブを変更して、他のことを少しするように変更しました。ただし、ユーザーのアクティビティを追跡して非アクティブ性を検出するのが便利な場合があります。

あなたがその機(jī)能を必要とするかもしれないときに、いくつかの例について考えてみましょう:

  • 記事の読み取り時間を追跡します
  • 自動保存フォームまたはドキュメント
  • 自動一時停止ゲーム
  • ビデオプレーヤーのコントロールを隠す
  • セキュリティ上の理由でユーザーをオートログアウトします

私は最近、その最後の例を巻き込んだ機(jī)能に遭遇しました。これは、セキュリティ上の理由で非アクティブなユーザーを自動記録します。

なぜ自動ログアウトを気にする必要があるのですか?

多くのアプリケーションは、ユーザーが自分の個人データのいくらかの量にアクセスできるようにします。アプリケーションの目的に応じて、そのデータの量と値は異なる場合があります。それはユーザーの名前のみかもしれませんが、醫(yī)療記録、財(cái)務(wù)記録など、より敏感なデータでもあります。

一部のユーザーは、ログアウトしてセッションを開いたままにするのを忘れる可能性があります。それはあなたに何回起こったのですか?たぶん、あなたの攜帯電話が突然鳴ったのかもしれませんし、ブラウザをつけたままにして、すぐに離れる必要がありました。他の誰かがそのセッションを使用して機(jī)密データを抽出する可能性があるため、ユーザーセッションを開いたままにすることは危険です。

この問題と戦う1つの方法は、特定の期間內(nèi)にユーザーがアプリと対話した場合の追跡を行い、その時間を超えた場合にログアウトをトリガーします。ログアウトが発生しようとしていることをユーザーに警告するポップオーバー、またはおそらくタイマーを表示することをお勧めします。または、非アクティブユーザーが検出されたときにすぐにログアウトすることができます。

1つのレベルに進(jìn)むと、私たちがやりたいのは、ユーザーの最後の相互作用から経過した時間を數(shù)えることです。その期間がしきい値よりも長い場合は、非アクティブなハンドラーを解雇したいと考えています。ユーザーがしきい値が侵害される前にアクションを?qū)g行した場合、カウンターをリセットして再度カウントを開始します。

この記事では、この例に基づいてこのようなアクティビティ追跡ロジックを?qū)g裝する方法を示します。

ステップ1:追跡ロジックを?qū)g裝します

2つの機(jī)能を?qū)g裝しましょう。 1つ目は、ユーザーがアプリと対話するたびにタイマーをリセットする責(zé)任があり、2つ目はユーザーが非アクティブになったときに狀況を処理します。

  • ResetUsivityTimeOut - これは、ユーザーがアプリケーションと対話するたびに既存のタイムアウトをクリアし、新しいタイムアウトを起動することを擔(dān)當(dāng)する方法です。
  • 不活性化 - これは、ユーザーアクティビティのタイムアウトがなくなったときに起動される方法です。
 let userActivityTimeOut = null;

function reseTuserActivityTimeout(){
  ClearTimeout(userActivityTimeout);
  useractivitytimeout = setimeout(()=> {
    InactiveUseraction();
  }、inactive_user_time_threshold);
}

function inactiveUseraction(){
  //ログアウトロジック
}

わかりました。そのため、アクティビティの追跡を擔(dān)當(dāng)する方法がありますが、まだどこにも使用していません。

ステップ2:アクティベーションの追跡

次に、追跡のアクティブ化を擔(dān)當(dāng)するメソッドを?qū)g裝する必要があります。これらの方法では、イベントが検出されたときにreseTuserActivityTimeOutメソッドを呼び出すイベントリスナーを追加します。あなたはあなたが望むだけ多くのイベントを聞くことができますが、簡単にするために、私たちはそのリストをいくつかの最も一般的なものに制限します。

関數(shù)ActivateActivityTracker(){
  window.addeventlistener( "mousemove"、resetusivitytimeout);
  window.addeventlistener( "scroll"、resetusivitytimeout);
  window.addeventlistener( "keydown"、resetusivitytimeout);
  window.addeventlistener( "resize"、resetusivitytimeout);
}

それでおしまい。ユーザー追跡の準(zhǔn)備が整いました。私たちがする必要がある唯一のことは、ページのロードでActivateativityTrackerを呼び出すことです。

私たちはそれをこのように殘すことができますが、あなたが近づくと、私たちがコミットしたばかりのコードに深刻なパフォーマンスの問題があります。ユーザーがアプリと対話するたびに、ロジック全體が実行されます。それは良いことですが、よく見てください。追跡に必要でなくても、ユーザーがページと対話するときに膨大な回?cái)?shù)を解雇されるイベントにはいくつかの種類があります。 Mousemoveイベントを見てみましょう。マウスをタッチして動かしたとしても、Mousemoveイベントは何十回も解雇されます。これは本當(dāng)のパフォーマンスキラーです。指定された期間ごとに1回のみユーザーアクティビティロジックを起動できるようにするスロットラーを?qū)毪工毪长趣恰ⅳ饯螁栴}に対処できます。

今それをしましょう。

ステップ3:パフォーマンスを改善します

まず、スロットラーのタイムアウトを參照し続けるもう1つの変數(shù)を追加する必要があります。

 let userActivityThrOTTLETIMEOUT = null

次に、スロットラーを作成するメソッドを作成します。その方法では、スロットラーのタイムアウトが既に存在するかどうかを確認(rèn)し、そうでない場合は、特定の期間後にリセティータイムアウトを発射するものを作成します。それは、すべてのユーザーアクティビティが追跡ロジックを再びトリガーしない期間です。その後、スロットラーのタイムアウトがクリアされ、次のインタラクションがアクティビティトラッカーをリセットできるようになります。

 userActivityThrottler(){
  if(!userActivityThrottLertimeOut){
    userActivityThrOTTLETIMEOUT = SETTIMEOUT(()=> {
      reseTuserActivityTimeout();

      ClearTimeout(userActivityThrOttLertimeOut);
      userActivityThrOTTLETIMEOUT = null;
    }、user_activity_throttler_time);
  }
}

ユーザーインタラクションで起動する必要がある新しい方法を作成したばかりなので、アクティブ化ロジックでイベントハンドラーをresetusivityTimeTimeTthoroutからUserActivityThrottlerに変更することを忘れないでください。

 ActivateativityTracker(){
  window.addeventlistener( "mousemove"、useractivitythrottler);
  // ...
}

ボーナス:それを再生しましょう!

アクティビティ追跡ロジックが実裝されたので、そのロジックをVUEを使用してアプリケーションビルドにどのように移動できるかを見てみましょう。この例に基づいて説明します。

まず、すべての変數(shù)をコンポーネントのデータに移動する必要があります。これは、すべてのリアクティブな小道具が住んでいる場所です。

デフォルトのエクスポート{
  データ() {
    戻る {
      isinactive:false、
      useractivitythrottlertimeout:null、
      userActivityTimeOut:null
    };
  }、
// ...

次に、すべての機(jī)能をメソッドに移動します。

 // ...
  方法:{
    ActivateativityTracker(){...}、
    reseTuserActivityTimeout(){...}、
    userActivityThrottler(){...}、
    InactiveUseraction(){...}
  }、
// ...

VUEとそれはリアクティブシステムを使用しているため、すべての直接DOM操作i。(IE document.getElementById( "App")。InnerHTML)をドロップし、ISICATIVEデータプロパティに依存することができます。以下のように、コンポーネントのテンプレートでデータプロパティに直接アクセスできます。

 
  <div>
    <p>ユーザーはincive = {{isinactive}} </p>です
  </div>
テンプレート>

最後に行う必要があることは、追跡ロジックをアクティブにする適切な場所を見つけることです。 Vueには、まさに私たちが必要なものであるコンポーネントライフサイクルフック、特にBeForemountフックが付屬しています。それでそこに置いてみましょう。

 // ...
  beforemount(){
    this.activateativityTracker();
  }、
// ...

私たちにできることはもう1つあります。私たちはウィンドウでタイムアウトと登録イベントリスナーを使用しているので、自分自身の後に少しきれいにすることは常に良い習(xí)慣です。私たちはそれを別のライフサイクルフック、beforedestroyで行うことができます。コンポーネントのライフサイクルが終了したときに、登録したすべてのリスナーを削除し、すべてのタイムアウトをクリアしましょう。

 // ...
  beforedestroy(){
    window.removeeventlistener( "mousemove"、this.useractivitythrottler);
    window.removeeventlistener( "scroll"、this.useractivitythrottler);
    window.removeeventlistener( "keydown"、this.useractivitythrottler);
    window.removeeventlistener( "s resize"、this.useractivitythrottler);
  
    cleartimeout(this.useractivitytimeout);
    ClearTimeout(this.UserActivityThrottlertimeOut);
  }
// ...

それはラップです!

この例では、アプリケーションとのユーザーの相互作用の検出に純粋に集中し、特定の期間內(nèi)に相互作用が検出されないときにそれに反応し、メソッドを起動します。私はこの例を可能な限り普遍的にしたかったので、それがあなたに検出したときに起こったべきことの実裝を殘しておいてください。

このソリューションがあなたのプロジェクトで役立つことを願っています!

以上が非アクティブユーザーの検出の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ロードスピナーとアニメーションを作成するためのCSSチュートリアル ロードスピナーとアニメーションを作成するためのCSSチュートリアル Jul 07, 2025 am 12:07 AM

CSSロード回転子を作成するには3つの方法があります。1。境界の基本回転子を使用して、HTMLとCSSを介してシンプルなアニメーションを?qū)g現(xiàn)します。 2。複數(shù)のポイントのカスタム回転子を使用して、異なる遅延時間を経てジャンプ効果を?qū)g現(xiàn)します。 3.ボタンに回転子を追加し、JavaScriptを介してクラスを切り替えて、読み込みステータスを表示します。各アプローチは、ユーザーエクスペリエンスを向上させるために、色、サイズ、アクセシビリティ、パフォーマンスの最適化などのデザインの詳細(xì)の重要性を強(qiáng)調(diào)しています。

CSSブラウザの互換性の問題とプレフィックスに対処します CSSブラウザの互換性の問題とプレフィックスに対処します Jul 07, 2025 am 01:44 AM

CSSブラウザの互換性とプレフィックスの問題に対処するには、ブラウザサポートの違いを理解し、ベンダーのプレフィックスを合理的に使用する必要があります。 1. FlexBoxやグリッドのサポート、位置:粘著性の無効、アニメーションのパフォーマンスなどの一般的な問題を理解することは異なります。 2. CANIUSE確認(rèn)機(jī)能サポートステータスを確認(rèn)します。 3. -webkit-、-moz-、-ms-、-o-およびその他のメーカーのプレフィックスを正しく使用します。 4.自動的にプレフィックスを追加するためにAutoprefixerを使用することをお勧めします。 5. PostCSSをインストールし、ターゲットブラウザを指定するようにBrowserSlistを構(gòu)成します。 6.建設(shè)中の互換性を自動的に処理します。 7. Modernizr検出機(jī)能は、古いプロジェクトに使用できます。 8.すべてのブラウザの一貫性を追求する必要はありません、

ディスプレイの違いは何ですか:インライン、ディスプレイ:ブロック、ディスプレイ:インラインブロック? ディスプレイの違いは何ですか:インライン、ディスプレイ:ブロック、ディスプレイ:インラインブロック? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:インライン、ブロック、およびinline-blockinhtml/cssarelayoutbehavior、spaceusage、andstylingcontrol.1.inlineelementsflowwithtext、notstartonnewlines、nagrorewidth/height、height、andonlyhorizo??ntalpadddddddddddddddding

スタイリングは、CSSとは異なるリンクを訪問しました スタイリングは、CSSとは異なるリンクを訪問しました Jul 11, 2025 am 03:26 AM

アクセスしたリンクのスタイルを設(shè)定すると、特にコンテンツ集約型のWebサイトでユーザーエクスペリエンスを向上させることができ、ユーザーがより良いナビゲートを支援します。 1。CSSを使用してください:訪問した擬似クラスは、色の変化などの訪問されたリンクのスタイルを定義します。 2。ブラウザは、プライバシーの制限により、いくつかの屬性の変更のみを許可することに注意してください。 3.突然の狀態(tài)を避けるために、色の選択は全體的なスタイルと調(diào)整する必要があります。 4.モバイル端子はこの効果を表示しない場合があり、アイコン補(bǔ)助ロゴなどの他の視覚的なプロンプトと組み合わせることをお勧めします。

CSSクリップパスでカスタムシェイプを作成します CSSクリップパスでカスタムシェイプを作成します Jul 09, 2025 am 01:29 AM

CSSのクリップパス屬性を作物要素に使用して、寫真やSVGに依存することなく、三角形、円形ノッチ、ポリゴンなどのカスタム形狀になります。その利點(diǎn)には、次のものが含まれます。1。円、楕円、ポリゴンなどのさまざまな基本的な形狀をサポートします。 2。レスポンシブ調(diào)整とモバイル端子に適応可能。 3.アニメーションが簡単で、HoverまたはJavaScriptと組み合わせて動的効果を?qū)g現(xiàn)できます。 4.レイアウトフローには影響せず、ディスプレイエリアのみを収穫します。一般的な使用法は、円形のクリップパス:円(50pxatcenter)および三角クリップパス:ポリゴン(50%0%、100 0%、0 0%)などです。知らせ

CSSペイントAPIとは何ですか? CSSペイントAPIとは何ですか? Jul 04, 2025 am 02:16 AM

thecsspaintingapienablesdynamicimagegeneration incssusingjavascript.1.developerscreateapaintclasswithapaint()method.2.they registeritviaregisterpaint()

CSSを使用して応答性のある畫像を作成する方法は? CSSを使用して応答性のある畫像を作成する方法は? Jul 15, 2025 am 01:10 AM

CSSを使用してレスポンシブ畫像を作成するには、主に次の方法で達(dá)成できます。1。最大幅を使用してください:100%と高さ:自動化して、割合を維持しながら畫像がコンテナ幅に適応できるようにします。 2。HTMLのSRCSETおよびサイズの屬性を使用して、異なる畫面に適合した畫像ソースをインテリジェントにロードします。 3.オブジェクトフィットとオブジェクトポジションを使用して、畫像のトリミングとフォーカスディスプレイを制御します。一緒に、これらの方法により、畫像がさまざまなデバイスで明確かつ美しく表示されるようになります。

一般的なCSSブラウザの矛盾とは何ですか? 一般的なCSSブラウザの矛盾とは何ですか? Jul 26, 2025 am 07:04 AM

さまざまなブラウザのCSS解析に違いがあるため、主にデフォルトのスタイルの違い、ボックスモデルの計(jì)算方法、フレックスボックスおよびグリッドレイアウトサポートレベル、および特定のCSS屬性の一貫性のない動作を含む一貫性のないディスプレイ効果が得られます。 1.デフォルトのスタイル処理は一貫性がありません。解決策は、cssresetまたはremormize.cssを使用して初期スタイルを統(tǒng)合することです。 2。IEの古いバージョンのボックスモデル計(jì)算方法は異なります。 Box-Sizing:Border-Boxを統(tǒng)一された方法で使用することをお勧めします。 3. FlexBoxとグリッドは、エッジの場合や古いバージョンでは異なる機(jī)能を示します。より多くのテストを行い、Autoprefixerを使用します。 4.一部のCSS屬性の動作は一貫性がありません。 Caniuseは相談して格下げする必要があります。

See all articles