ウェブサイトを更新するには、データベースのステータスフィールドを定期的に追跡する必要があります。これを達成するために、このようなタイマーをセットアップしてください。HTML:beforeunloadイベントは常に起動されますか
var id = window.setInterval("getState()", 1000);
getState()
AJAX
毎秒のデータベースを介して通話や特定のステータスフィールドの値を返します。ブラウザウィンドウが開いている間、タイマーが実行されています。ユーザーがそのブラウザウィンドウを閉じたとき、私は、私はこのコードを実行するタイマをクリアする必要があります。
window.addEventListener('beforeunload', function(event) {
setState(0);
clearInterval(id);
});
今、私の質問は:このevent
は常にトリガを取得していますか?これは最新のブラウザでは信頼できる方法ですか、それとも例外がありますか?
EDIT:
私は、ウィンドウが閉じているDBを更新するために、イベントbeforeunload
にsetState()
を追加します。これを前に忘れてしまいました...ごめんなさい...
非常に信頼性が高く、例外については何も聞いていません。インターバルハンドラを文字列として渡すのはなぜですか?単に 'setInterval(getState、1000)'を使うことができます。実際には、素早く読み上げると、本質的に「eval」なので、文字列アプローチを使用することは推奨されません。 – somethinghere
ウィンドウが閉じているときにタイマーが自動的にクリアされるので、 'beforeunload'イベントは必要ないと思います。 –
それは良い点ですが、私はDBの状態を更新する必要があることを忘れてしまいました。上記の私の編集を参照してください。 – Ben