如何检测单击Win+Shift+S(制作屏幕)JavaScript

问题描述 投票:0回答:1

如何判断按下了“Win + Shift + S”组合键? 我正在尝试这样做,但屏幕截图窗口显示得更快。有谁知道如何解决这个问题?

KeyCode for:
Win - 91
Shift - 16
S - 83

我们不能使用shiftKey和metaKey,因为它们只有在我们最后释放它们时才会触发

这是我的代码:

<script>
    const set = new Set();

    window.addEventListener('keydown', event => {
        set.add(event.keyCode)
        console.log(set)
    });

    window.addEventListener('keyup', event => {
        if (set.has(91) && set.has(16) && set.has(83)) {
            alert('made screen')
        }
        set.delete(event.keyCode);
        console.log(set)
    });
</script>
javascript keyboard screenshot
1个回答
0
投票

似乎您的意图是在使用屏幕截图时隐藏网站内容并发出警告,
我无法达到

[win-shift-s]
,但是用
[win-shift]
来解决,而且即使可以,也不会在屏幕截图工具弹出之前
所以我想你可以在 win-shift 本身进行检测(下面的代码将支持你,在屏幕截图发生之前显示警报)

var shortcut = {
  // (A) SET SHORTCUT KEYS TO LISTEN TO
  listen : null,
  set : (listen) => {
    // (A1) KEY SEQUENCE + FUNCTION TO RUN
    shortcut.listen = listen;

    // (A2) KEY PRESS LISTENERS
    window.addEventListener("keydown", (evt) => {
      shortcut.track(evt.key.toLowerCase(), true);
    });
    window.addEventListener("keyup", (evt) => {
      shortcut.track(evt.key.toLowerCase(), false);
    });
  },

  // (B) KEY PRESS SEQUENCE TRACKER
  sequence : [],
  track : (key, direction) => {
    // (B1) PREVENT AUTO CLEANING
    if (shortcut.junk != null) { clearTimeout(shortcut.junk); }

    // (B2) KEY DOWN
    if (direction) { if (!shortcut.sequence.includes(key)) {
      shortcut.sequence.push(key);
    }}

    // (B3) KEY UP
    else {
      let idx = shortcut.sequence.indexOf(key);
      if (idx != -1) { shortcut.sequence.splice(idx, 1); }
    }

    // (B4) HIT SHORTCUT?
    if (shortcut.sequence.length != 0) {
      let seq = shortcut.sequence.join("-");
      if (shortcut.listen[seq]) {
        shortcut.sequence = [];
        shortcut.listen[seq]();
      }

      // (B5) PREVENT "STUCK SEQUENCE" WHEN USER LEAVES PAGE
      // E.G. OPEN NEW TAB WHILE IN MIDDLE OF KEY PRESS SEQUENCE
      else {
        shortcut.junk = setTimeout(shortcut.clean, 600)
      }
    }
  },

  // (C) AUTO CLEANUP
  junk : null,
  clean : () => {
    shortcut.junk = null;
    shortcut.sequence = [];
  }
};
window.addEventListener("DOMContentLoaded", () => {
  shortcut.set({
    "meta-shift" : () => {// Use https://keycode.info/ to help you get the key name [*]
       document.getElementById("demoA").innerHTML = "Win Shift IS PRESSED"//[*]
       document.getElementById("demoA").style.color = "green";//[*]
       document.getElementById("demoA").style.backgroundColor = "lightgreen";//[*]
      }
  });
});
<!-- FOR THE DEMO -->
<div id="demoA"></div>

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.