Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关键事件在Chrome中有效,但在Internet Explorer 11中无效_Javascript_Jquery_Jsp - Fatal编程技术网

Javascript 关键事件在Chrome中有效,但在Internet Explorer 11中无效

Javascript 关键事件在Chrome中有效,但在Internet Explorer 11中无效,javascript,jquery,jsp,Javascript,Jquery,Jsp,我编写了一个简单的函数,如果触发了诸如PrintScreen和Windows键之类的键,它将在网页上隐藏我的文档 代码如下: document.onkeydown=windowskey; document.onkeyup=打印屏幕键; 功能键(e){ 开关(e.which){ 案例91://左窗 案例92://右侧窗口 $(“#documentViewer”).hide(); 打破 } } 功能打印屏幕键(e){ 开关(e.which){ 案例44://打印屏幕 copyToClipboard(

我编写了一个简单的函数,如果触发了诸如PrintScreen和Windows键之类的键,它将在网页上隐藏我的文档

代码如下:

document.onkeydown=windowskey;
document.onkeyup=打印屏幕键;
功能键(e){
开关(e.which){
案例91://左窗
案例92://右侧窗口
$(“#documentViewer”).hide();
打破
}
}
功能打印屏幕键(e){
开关(e.which){
案例44://打印屏幕
copyToClipboard();
$(“#documentViewer”).show();
打破
案例91://左窗
案例92://右侧窗口
$(“#documentViewer”).show();
打破
}
}
这个功能在Chrome浏览器上运行得很好,但我试着在其他浏览器(如IE11)上测试它,当我按下这些键时,它没有响应或触发任何事件

我真的很想让它标准化,这样它在所有浏览器上都能正常工作


我在这里犯了什么错误吗?

并非所有浏览器都支持
e.which
,但jQuery完全支持它。但是,在本例中,它不是jquery事件
document.onkeydown=windowskey

我建议您使用
e.keyCode
(或两者兼用)

我还建议您使用e.key(而不是e.keyCode),这使您的代码更加可读/易懂,并且它有一个良好的浏览器支持IE9+:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

switch (e.key) {
  case "Down": // IE/Edge specific value
  case "ArrowDown":
    // Do something for "down arrow" key press.
    break;

我在IE上测试过,它确实会触发Windows键,但不会触发打印屏幕,这是为什么?@Daredevil我还建议您使用
e.key
(而不是
e.keyCode
)这使您的代码更易于阅读/理解,并且它具有良好的浏览器支持IE9+:@Daredevil
e.key
使用人性化字符串来描述按下的键。它还考虑了修改键,例如
shiftKey
Backspace
Enter
e.keyCode
另一方面使用代码(数字),例如
91
92
,那么不使用
e.keyCode
,新代码看起来如何?但我只对Printscreen和windows按键按钮感兴趣
switch (e.key) {
  case "Down": // IE/Edge specific value
  case "ArrowDown":
    // Do something for "down arrow" key press.
    break;