ウィンドウ、ドキュメント、またはボディにアタッチされている場合、Javascript のフォーカス イベントとブラー イベントが Android ブラウザで正しく起動しないことがわかりました。
デスクトップ ブラウザでは正しく動作するが、Android ストック ブラウザ、Dolphin、Opera モバイルでは失敗する簡単なテスト スクリプトを作成しました。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
<title>Focus test</title>
<script type="text/javascript">
window.onfocus = function() {
document.getElementById('console').innerHTML += '<div>Focus event handler fired.</div>';
};
window.onblur = function() {
document.getElementById('console').innerHTML += '<div>Blur event handler fired.</div>';
};
</script>
</head>
<body>
<input id="test" name="test" />
<div id="console"></div>
</body>
</html>
興味深いことに、フォーム入力がフォーカスされると、イベント ハンドラーが起動し、ぼかしが発生すると、blur イベント ハンドラーが 2 回起動します。
誰かがこれに対する良い解決策または回避策を持っていますか?
編集:期待される結果は、ブラウザーのタブを変更するか、別のアプリに変更すると、blur イベントが発生し、ブラウザーのタブに戻ると、フォーカス イベントが発生することです (これがデスクトップでの動作です)。 )