IE仅检测到打印屏幕键的第一个按键(其他按键每次都有效)



这是我的代码:

$(document).keyup(function (e) {
alert("felt something!");
if (e.keyCode == 44) {
alert("felt PS");
ccd();
}
});
function ccd() {
if (clipboardData) {
window.clipboardData.setData('text', '');
}
}

在chrome中,ccd功能什么都不做(这很好),但每次我按下PS按钮时都会弹出消息"Felt PS"。然而,在IE(7-9)中,我可以看到一条"感觉PS"消息。在那之后,打PS什么都不做,但打任何其他键都会导致"感觉到什么!"。

有人知道是什么导致了这个问题吗?

我没有足够的酷点来发表评论,但我知道这一点:

在Internet Explorer中,如果先按下另一个键,打印屏幕的KeyUp事件将触发一次,而且只触发一次再次按下另一个键,将再次检测到打印屏幕:但一次且仅一次

这适用于多个页面,因此登录一个网站,然后浏览几个页面,然后点击打印屏幕:检测到。

让IE记住你下次访问时的登录信息,浏览相同的几个页面,点击打印屏幕:未检测到。

这就是为什么Chase关于ALT+打印屏幕的最新答案是正确的。通过首先按下alt,您已经检测到打印屏幕所需的按键。。。一旦

用Javascript创建的假键盘事件不足以人为地引发这种行为,无论是什么原因导致打印屏幕被检测到(或不被检测到)都存在于IE本身中(因为相同的JS在Firefox中也可以正常工作)。

虽然不能完全回答你的问题,但我希望能根据我自己解决这个问题的经验提供一些见解。

对于IE,您需要小心使用e,因为旧版本的IE使用全局window.event对象。请尝试以下代码:

$(document).keyup(function (e) {
if(!e) e = window.event; //check for e, otherwise use the global window.event
var keyCode = e.which || e.keyCode //changed as not all browsers use keyCode
alert("felt something!");
if (keyCode  == 44) {
alert("felt PS");
ccd();
}
});
function ccd() {
if(window.clipboardData) { //changed to look for window.clipboardData instead otherwise throws an error in other browsers.
window.clipboardData.setData('text', '');
}
}

请注意上面我更改代码的注释行。

示例

更新

您可能必须按下ALT+PRINT SCREEN才能注册该键的事件。我现在还不能100%确定为什么,所以如果其他人碰巧知道,请编辑答案或在评论中留下。

**请注意修改后的代码。

相关内容

最新更新