ECMAscript (=Javascript) では、ユーザーがページから離れているかどうかを確認する方法が 2 つあります。で " visibilitychange
" イベントをリッスンするか、 で " " および " " イベントをdocument
リッスンできます。それらの間に違いはありますか?blur
focus
window
2276 次
2 に答える
7
はい。それらの最も重要な違いは、電話で見ることができます。デスクトップおよびタブレット デバイスでブラウザのタブを変更したい場合、1 つのステップで変更できます。行きたい場所をクリック/タップするだけで、そこにいます。このように見えます。
しかし、電話では通常、2 つのステップがあります。最初はこんな感じでスタート
TABS アイコンをタップすると、このようなフライオーバー メニューが表示されます。
ここで、visibilitychange と blur/focus の主な違いが明らかになり、重要になる場合もあります。「 」によるとvisibilitychange
、ユーザーはこの段階ではまだあなたのページから離れていません。しかし、「blur
/ focus
」によると、ユーザーは不在です。
他のケースについては、両方を使用して、どちらが先に発火するかを確認しました。コードは、
document.addEventListener("visibilitychange", visChngF);
function visChngF()
{
if (document.hidden) {
console.log("hidden means user is gone");
} else {
console.log("visible means user is back");
}
}
window.addEventListener('blur', blurHappenedF);
function blurHappenedF()
{
console.log("blur means user is away");
}
window.addEventListener('focus', focusHappenedF);
function focusHappenedF()
{
console.log("focus means user is here");
}
結果: 予測不能です。可視性の変化は、ぼかし/フォーカスの前に発火することもあれば、後に発火することもあります。これは、blur イベントと focus イベントの間に発生することさえあります。
于 2019-09-28T16:57:34.923 に答える