15

ユーザーがブラウザを閉じる/最小化した後 (ホーム画面/別のアプリに戻るため)、またはデバイスがスリープから再開します (ユーザーが電源をオフにするか、画面のタイムアウト後にスリープ状態になります)。

すべてに有効な単一のイベントを見つけたいと思っていますが、それはありそうもありません。このpageshowイベントは iOS デバイスで機能しますが、それ以外のデバイスで使用するには大ざっぱです。試してみましfocusDOMActivateが、どちらも望ましい効果がないようです。

ページに常にフォーム要素があるとは限らず、イベントをトリガーするためにユーザーがページに再度触れる必要はありません。

このようなイベントの要件は、XHR リクエストを作成して新しいコンテンツを定期的にチェックするコードによって発生します。これらはブラウザーがスリープ状態のときは送信されないため、新しいコンテンツを取得してタイムアウトを再開することはありません。

皆さんが提供できるかもしれない助けをありがとう!

4

2 に答える 2

0

インターバルよりも、ウィンドウ ブラー リスナーとウィンドウ フォーカス リスナーを追加することをお勧めします。ぼやけて、現在の時刻を記録します。焦点を合わせて、まだログインしている/同期している/必要なことは何でも検証します。

基本的にはまったく同じですが、ページ全体の速度を一定間隔で遅くするのではなく、必要な場合にのみ実行します。

アップデート

var $window = $(window),
  $window.__INACTIVITY_THRESHOLD = 60000;

$window.add(document.body);  //necessary for mobile browsers

$window.declareActivity = function () { $window.__lastEvent = new Date(); };

$window.blur($window.declareActivity);
$window.focus(function(){
  var diff = (new Date()) - $window.__lastEvent;
  if (diff > $window.__INACTIVITY_THRESHOLD) { 
     $window.trigger("inactivity"); 
  }
});

$window.on("inactivity", "", null, function () {
  //your inactivity code
});

電話の電源がオフになっている場合、そのぼかしイベントは大ざっぱに見えますが、すべての状況/モバイルデバイスでそれを信頼できるかどうかはわかりません. だから私はおそらく次のようなものを投げ込むでしょう:

$(document.body).on("click scroll keyup", "", null, $window.declareActivity);

ユーザーが立ち去ったときにも非アクティブタイマーが機能するようにします。サイトによっては、その正確なイベント リストを調整するか、単に $window.declareActivity(); をスローする必要がある場合があります。ユーザー入力に応答する既存のスクリプトに追加します。

于 2015-10-06T17:18:48.190 に答える