4

IE6/IE7/IE8 では、onclick イベント (クリックされたボタンから) が発生しない場合があることに気付きました。最後の onclick イベントが発生してから数秒の猶予期間があるようです。

次のコードを使用して、この動作をテストすることにしました。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
            <script type="text/javascript">
                window.onload = function(){
                    document.getElementById('clicker').onclick = function(){
                        var i = 0
                        return function(){
                            i+= 1
                            this.value = i.toString()
                        }
                    }()
                }
            </script>
        </head>
        <body>
        <input type="submit" value="click here" id="clicker"/>
    </body>
</html>

ブラウザー比較 (1/4 速度) ご覧のとおり、ボタンを 2 回クリックするだけで IE 6-8 でイベントが発生しますが、9/firefox/chrome では毎回イベントが発生します。 .

これの原因は何ですか?IE6 および 8 は、Windows XP を搭載した仮想マシン (VirtualBox) でテストされました。

他の:

  • 「送信」と「ボタン」の両方で同じ結果が得られました。
  • onclick の代わりに「Onmouseup」を使用するとうまくいくようです。
4

1 に答える 1

2

古いバージョンの IE では、クリックとダブルクリックの両方を処理する必要があります。

そうしないと、ダブルクリックの最初のクリックだけが処理され、この錯覚が生じます。

これを試して :

window.onload = function() {
    var i = 0;
    document.getElementById('clicker')
        .onclick = function() { this.value = (i+=1).toString() };
    document.getElementById('clicker')
        .ondblclick = function() { this.value = (i+=1).toString() };
}
于 2013-05-12T17:47:54.033 に答える