这是我的代码:
$(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)中,我可以看到一条“Felt PS”消息。在那之后,击中PS什么都不做,但击中任何其他键会导致“感觉到什么!”。
任何人都有任何想法可能导致此问题?
答案 0 :(得分:6)
我没有足够的酷点来发表评论,但我知道这一点:
在Internet Explorer中,打印屏幕的KeyUp事件将触发一次 - 仅一次 - 只要先按下另一个键。再次按下另一个键,将再次检测到打印屏幕:但是一次且仅一次。
这适用于各个页面,因此登录网站然后导航几个页面,然后点击打印屏幕:检测到。
让IE在下次访问时记住您的登录信息,导航相同的几页,点击打印屏幕:未检测到。
这就是Chase关于ALT + Print Screen的更新答案正确的原因。通过先按下alt,您可以检测到打印屏幕所需的按键...一次。
使用Javascript创建的伪造键盘事件不足以人为地引发此行为,无论是什么原因导致检测(或不检测)打印屏幕都在IE本身内(因为相同的JS在Firefox中可以正常工作)。 / p>
虽然不能完整回答您的问题,但我希望能够根据自己的经验尝试解决同样的问题。
答案 1 :(得分:3)
对于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', '');
}
}
请注意上面我已更改代码的注释行。
<强> EXAMPLE 强>
<强>更新强>:
您可能需要按ALT + PRINT SCREEN才能使事件注册该键。我现在不是100%肯定为什么,所以如果其他人碰巧知道请编辑答案或留在评论中。
**请注意修改后的代码。