私はスクリプトを実行させようとしています Ctrl + Alt + e が押されます。
Ctrl、Alt、およびeの同時キーでTampermonkeyを起動するにはどうすればよいですか?
ctrlKey
とaltKey
を試しました。動作するものは何も見つかりませんでした。
以下のスクリプトを編集して起動するにはどうすればよいですか Ctrl + Alt + e、代わりに e?
(function() {
document.addEventListener("keypress", function(e) {
if (e.which == 101) {
var xhttp = new XMLHttpRequest;
xhttp.onreadystatechange = function() {
4 == xhttp.readyState && 200 == xhttp.status && eval(xhttp.responseText)
}, xhttp.open("GET", "http://127.0.0.1:2337/inject", !0), xhttp.send();
}
});
})();
キーボードイベントのW3C仕様 を参照してください。 修飾キーが、目的のターゲットキーと一緒に押されたかどうかを判断するために、いくつかのブール属性が提供されています。
ctrlKey
-「Control」キーも押されました。shiftKey
-「Shift」キーも押されました。altKey
-「Alt」キーも押されました。metaKey
-「メタ」キーも押されました。その他重要事項:
which
プロパティは廃止されました 。keydown
を使用します。これは、 Chromeが既知のキーボードショートカットに対してkeypress
イベントを発生させないためです。key
などの特定のプロパティは、 Firefox で部分的にのみ機能します。したがって、コードは次のようになります。
document.addEventListener ("keydown", function (zEvent) {
if (zEvent.ctrlKey && zEvent.altKey && zEvent.key === "e") { // case sensitive
// DO YOUR STUFF HERE
}
} );
この便利なデモを実行する (key
が完全にサポートされるようになりました):
var targArea = document.getElementById ("keyPrssInp");
targArea.addEventListener ('keydown', reportKeyEvent);
function reportKeyEvent (zEvent) {
var keyStr = ["Control", "Shift", "Alt", "Meta"].includes(zEvent.key) ? "" : zEvent.key + " ";
var reportStr =
"The " +
( zEvent.ctrlKey ? "Control " : "" ) +
( zEvent.shiftKey ? "Shift " : "" ) +
( zEvent.altKey ? "Alt " : "" ) +
( zEvent.metaKey ? "Meta " : "" ) +
keyStr + "key was pressed."
;
$("#statusReport").text (reportStr);
//--- Was a Ctrl-Alt-E combo pressed?
if (zEvent.ctrlKey && zEvent.altKey && zEvent.key === "e") { // case sensitive
this.hitCnt = ( this.hitCnt || 0 ) + 1;
$("#statusReport").after (
'<p>Bingo! cnt: ' + this.hitCnt + '</p>'
);
}
zEvent.stopPropagation ();
zEvent.preventDefault ()
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<p><label>Press keys in here:<input type="text" value="" id="keyPrssInp"></label>
</p>
<p id="statusReport"></p>
keypress
イベントは、キーが押されるとすぐに発生します。複数のキーを押している場合は、押すたびにイベントが発生するため、独立したキーの押下と見なされます。
代わりに、keydown
イベントとkeyup
イベントの両方を使用して、複数のキーの押下を検出できます。 3つのキーとブール状態を含むオブジェクトを持つことができます。 keydown
イベントで、現在のキーがオブジェクトのキーと一致する場合、そのキーの状態をtrue
に設定します。 keyup
イベントで、現在のキーの状態をfalse
にリセットします。最後にキーを押した時点で3つの状態がすべてtrue
である場合、イベントを発生させます。
JQueryを使用してこのロジックを実現する この例 を参照してください。
Updateブロックの答えは、修飾キーを単一のキーコードターゲットと組み合わせて使用するのに適したソリューションです。ctrlKey
およびaltKey
修飾子が組み合わせて検出されるため独立して処理されません。たとえば、E
とF
のような複数のキーコードを一緒に検出する場合は、上記のようにkeydown
とkeyup
を使用してそれらを追跡する必要があります。