打印屏幕的按键码(44无法使用)

10

所以我想测试一下我的网站访问者是否按了Print Screen键。

尽管我已经尝试搜索,但并没有找到如何完成此操作的信息。我所找到的只是keyCode == 44应该与之对应。

对于我尝试的其他按钮,都没有问题。

我的错误出在哪里?

这里是类似的,适用于enter键的可行代码:

window.addEventListener("keydown", checkKeyPressed, false);

function checkKeyPressed(e) {
    if (e.keyCode == "13") {
        alert("The 'enter' key is pressed.");
    }
}

Mac有不同的方法来截屏。 - Muhammad Umer
当你点击键盘上的按键时会得到什么?console.log(e.keyCode);当然,没有if语句。 - Andreas Louv
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Szabolcs Páll
3个回答

10
window.addEventListener("keyup", function(e) {
  if (e.keyCode == 44) {
    alert("The 'print screen' key is pressed");
  }
});

注意使用keyup而不是keydown

说实话,我不知道为什么这个有效而另一个无效,但我认为这可能与操作系统在按下时截取并阻止事件有关。


1
我认为这是因为 keydown 能够及早捕获并阻止打印屏幕。 - Havihavi

4
根据此页面上的评论:javascripter,在大多数浏览器中,按下PrntScrn键只会触发keyup事件。因此,您需要:
function checkKeyPressed(e) {
    if (e.keyCode == "44") {
        alert("The print screen button was pressed.");
    }
}

window.addEventListener("keyup", checkKeyPressed, false);

看起来我太慢了。我会保留这个帖子,因为它包含了链接。 - Chris Charles

0
如果有帮助的话,在Visual Basic中它的工作方式是这样的:
    Private Sub PdfViewer1_KeyUp(sender As Object, e As KeyEventArgs) Handles PdfViewer1.KeyUp
        If e.KeyCode = Keys.PrintScreen Then
            e.SuppressKeyPress = True
            MsgBox("Printscreen is prohibited!", MsgBoxStyle.Critical, "PRINTSCREEN DISABLED!")
            Clipboard.Clear()
        End If
    End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接