首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅检测打印屏幕键的第一个键(其他每次工作)

仅检测打印屏幕键的第一个键(其他每次工作)
EN

Stack Overflow用户
提问于 2012-12-05 21:26:53
回答 2查看 3.2K关注 0票数 0

这是我的代码:

代码语言:javascript
运行
复制
$(document).keyup(function (e) {
    alert("felt something!");
    if (e.keyCode == 44) {
        alert("felt PS");
        ccd();
    }
});

function ccd() {
    if (clipboardData) {
        window.clipboardData.setData('text', '');
    }
}

在铬,ccd功能什么都不做(这很好),但信息“感觉PS”弹出每次我点击PS按钮。然而,在IE (7-9),我可以得到一个“感觉PS”信息出现。在那之后,点击PS没有什么作用,但击中任何其他关键原因是一个“感觉的东西!”

任何人都不知道是什么引起了这一问题?

EN

回答 2

Stack Overflow用户

发布于 2013-08-08 21:12:34

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

在中,只要先按下另一个键,打印屏幕的KeyUp事件就会触发一次--而且只有一次。通过再次按下另一个键,将再次检测到打印屏幕:但只有一次。

这可以跨页面工作,所以登录到一个网站,然后导航几个页面,然后点击打印屏幕:检测到。

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

这就是为什么Chase更新的关于ALT +打印屏幕的答案是正确的。首先,通过降低alt,您已经导致了打印屏幕成为detected...once所必需的按键。

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

虽然对你的问题没有一个完整的答案,但我希望能根据自己的经验提供一些洞察力,试图解决同样的问题。

票数 6
EN

Stack Overflow用户

发布于 2012-12-05 21:51:32

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

代码语言:javascript
运行
复制
$(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 +打印屏幕,以便事件为该键注册。我不能百分之百确定为什么在目前,所以如果其他人碰巧知道,请编辑答案或留在评论中。

**也请注意经修订的守则。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13732771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档