次のコードを実行しています。
<html>
<body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
$('html').on('mouseleave', function(e) {
console.log('mouseleave');
});
$('#text1').on('focusout', function () {
alert("focusout");
setTimeout(function(){$('#text1')[0].focus();},0);
});
});
</script>
<input type=text id="text1">
</body>
</html>
テキスト入力で focusout イベントをトリガーする前にマウスをブラウザーのツールバー/タブ/リンク/その他の領域に移動すると、mouseleave イベントが発生し、更新ボタンまたはその他のボタン/タブ/その他を押すことができます。
ただし、focusout イベントをトリガーした後、mouseleave イベントは発生しなくなり、focusout によってその領域のボタンを押すことができなくなります。
マウスをブラウザのドキュメント ウィンドウから別のアプリケーションまたはバックグラウンドに移動したり、firebug ウィンドウに移動したりすると、mouseleave イベントが発生しますが、マウスをブラウザのツールバー/タブ/リンク/その他の領域に移動すると発生しません。
ただし、手動でテキスト入力に戻ると、マウスリーブが再び正常に起動し始めます。
この動作は、IE、Chrome、または Safari では発生せず、Firefox でのみ発生します (私は Firefox 21 を使用しています)。
提案や説明は大歓迎です!
ダナ