2017-12-12 19 views
2

私のアプリでは、ツールチップの追加情報を切り替えるために、Altキーを押したままにする必要があります。しかし、最初にAltキーを押すと、ドキュメントはChromeのメニューに移動するため、キーボードのフォーカスが失われます。ドキュメントの任意の部分をクリックすると、再び動作します(一度)。ChromeのAltキーを検出する

preventDefaultを呼び出すことでこれを回避できますが、Alt +左​​/右などのキーボードショートカットも無効になりますが、これは望ましくありません。

また、mousemoveを処理し、altKeyフラグをチェックすることもできますが、マウスを移動したときにのみ更新すると非常に厄介です。

私の状況で現在のAltキーの状態を確実に検出する方法はありますか?私は本当にむしろ別のキーに切り替えることはありません。

更新:ツールチップがアクティブな場合にのみpreventDefaultを呼び出すことをお勧めします。

document.addEventListener("keydown", (e) => { 
    if (this.curComponent) e.preventDefault(); 
    if (e.which === 18) { 
     this.outer.classList.add("AltKey"); 
    } 
    }); 
    document.addEventListener("keyup", (e) => { 
    if (this.curComponent) e.preventDefault(); 
    if (e.which === 18) { 
     this.outer.classList.remove("AltKey"); 
    } 
    }); 

答えて

-1

のjQuery:

$(document).keyup(function(e){ 
    if(e.which == 17){ 
     alert("Alt key press"); 
    } 
}); 

はJavaScript

document.keyup = function(e){ 
    if(e.which == 17){ 
    alert("Alt key press"); 
    } 
} 
+0

イベントの設定方法はわかりましたが、動作しません。質問をお読みください。また、17はCtrlではなくAltです。 – riv

0

私は同じ問題を持っていたし、私はこのanswerのおかげで解決:

document.addEventListener("keyup", (e) => { 
    if (e.key === "Alt") { 
     return true; // Instead of e.preventDefault(); 
    }); 

return trueAltキー + /クロームキーボードショートカットの通常の動作を復元します。

関連する問題