2

これがどのように機能するのかわかりません。私は重要な出来事を学ぼうとしています。キーダウンが機能するようになりましたが、キーアップが機能しません。どんな助けでも感謝します。

      window.onload = function(){

        window.addEventListener('keyup' , loopit1 ); // this doesn't work.
        /*window.addEventListener('keydown' , loopit2 );*/ // this works. That's why it's commented out.

        function loopit1(e){
        if(e.ctrlKey){
        alert("Key Up!");
        }
        //This doesn't work.
        }

        /*function loopit2(e){
        if(e.ctrlKey){
        alert("Key Down!");
        }
        }*// This Works. That's why it's commented out.

}
4

2 に答える 2

2

それは機能します。このctrlKeyプロパティはCtrl、イベントが発生したときにキーが押されたかどうかを示します。したがって、キーが発生した直後にイベントが発生Ctrlするため、キーが発生したばかりのキーである場合は発生しません。別のキーが上がっている間にキーが押されている場合、true になります。keyupCtrlCtrle.ctrlKey

ただし、ドキュメントからフォーカスを奪うようなブラウザー アクションを引き起こさないキーである必要があります。キーをT押しながらキーを上げるCtrlと、イベントが発生する前にブラウザーが新しいタブに移動します。試してみてくださいCtrl+Alt:Ctrlキーを押したまま、 を押して放しAltます。

Ctrlキー自体が解除されたかどうかをテストする場合e.keyCodeは、値を確認する必要があります17。ただし、e.keyCodeは推奨されておらe.keyず、将来的にはに置き換える必要があります。ただし、 e.keyまだ広く実装されていないため、当面は使用する必要があります。keyCode

于 2013-10-22T20:24:30.970 に答える
1

イベント オブジェクトをログアウトすると、イベントでそれが表示されますがe.ctrlKey = truekeydownイベントで表示さe.ctrlKey = falseれますkeyup

なぜ聞くの?

ソースや事実について言及することはできませんが、私の論文は次のようなものです。

e.ctrlKey ボタンをクリックするときに ctrl キーが押されているかどうかを確認するためのプロパティがあります。チェックアウトするとわかるように、イベント オブジェクトには、チェックする必要があるこれらのプロパティが多数あります。このようにして、ユーザーが ctrl+s や alt+f7 などをクリックしているかどうかを簡単に確認できます。

e.ctrlKey が常に false である理由は、おそらく決して必要とされないためです。おそらく奇妙ですが、上記の私の議論を考えると、そもそもそれを設定することは本当に意味がありません.

問題の解決策は、代わりに keyCode プロパティを確認することです。ctrl のキーは 17 です。

function loopit1(e){
    if(e.keyCode === 17){
        alert("Key Up!");
    }
}

お役に立てれば!

于 2013-10-22T20:25:55.513 に答える