IE 6下のfocusとblurの入り乱れた解決策


Millerさんが発見したIE 6 bug:以下のコードのように、textareaをクリックすると、windowのblurを誘発し、focusとblurのペアが混乱します.
<body> <textarea></textarea> hello<script> window.onblur=function(){
    document.title= 'blur:' + Math.random() ;
}
window.onfocus=function(){
    document.title= 'focus:' + Math.random() ;
}</script> </body> 
これはよくある必要性です.例えば、現在のウィンドウは定期的にデータを更新しています.IE 6のバグによるペアの混乱は、私たちの計画を混乱させます.
インターネットで調べても、このバグに関する公式説明が見つかりませんでした.解決策を紹介します.
コードは以下の通りです.Venus'Blog
<body> <textarea></textarea> hello<script> (function(){
    var focusTimer = 0;
    function myBlur(){
        document.title= 'blur:' + Math.random() ;
    }
    function myFocus(){
        clearTimeout(focusTimer);
        focusTimer = setTimeout(function(){
            document.title = 'focus:' + Math.random() ;
        },10);
    }
    window.onfocus = document.body.onfocusin = myFocus;
    window.onblur = document.body.onfocusout = myBlur;
}());</script> </body>
大まかな原理は:多くの可能性がありますonfocusとonblurのタイミングは、すべてのonblurはすぐに実行されますが、onfocusは10ミリ秒の遅延を実行します.
その結果、マイフォーやマイレージを何度も実行したとはいえ、ウィンドウの状態の正確さが保証されます.Venus Blog
方法はパクリかもしれませんが、すぐにはもっといい方法が思いつかないので、とりあえず焦眉の急が解けると思います.