Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 中键单击事件_Javascript_Jquery_Html_Javascript Events - Fatal编程技术网

Javascript 中键单击事件

Javascript 中键单击事件,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,我的Chrome扩展中有这段代码,所以我可以使用作为链接。 直到最近,这项工作一直如预期的那样有效。(左-在当前选项卡中打开,中-在新选项卡中打开)。现在它只记录左键点击 $('div.clickable-href').on('click', function(e) { switch(e.which) { case 1: window.location = $(this).attr('href'); break; case 2: windo

我的Chrome扩展中有这段代码,所以我可以使用
作为链接。 直到最近,这项工作一直如预期的那样有效。(左-在当前选项卡中打开,中-在新选项卡中打开)。现在它只记录左键点击

$('div.clickable-href').on('click', function(e) {
  switch(e.which) {
    case 1:
      window.location = $(this).attr('href');
      break;
    case 2:
      window.open($(this).attr('href'));
      break;
    case 3:
      break;
  }
});
我使用
链接,这样浏览器就不会显示状态栏

我发现了一些类似的问题,但所有答案都建议使用
.on('mousedown',(e)=>{…}
。仅当有
mousedown
事件后跟
mouseup
事件时,我才需要触发此事件。
更令人沮丧的是,这曾经奏效,但现在已经不起作用了


编辑:

这是Chrome 55的一个问题。在Linux上(我第一次注意到异常),Chrome已经更新到v55。在我的Windows系统上,它是v54,点击鼠标中键可以正常工作。从54更新到55导致了同样的问题。

我注意到chrome中的鼠标按钮3有问题(没有在其他浏览器上测试)

因此,这里有一个解决方案(将
contextmenu
添加到触发事件中):


编辑
感谢MatevžFabjančičuse的有用评论

我确认,由于Chrome 55(我一分钟前更新过),现在鼠标中键点击触发新的
auxclick
事件。
因此,
单击
事件只能通过鼠标按钮1触发

请注意,
auxclick
由鼠标按钮2和3触发

$('div.clickable-href')。在('click auxclick contextmenu',函数(e){
e、 预防默认值();
console.log(e.which);
console.log(e.type);
如果(e.type==“contextmenu”){
log(“阻止上下文菜单”);
返回;
}
开关(e.which){
案例1:
//window.location=$(this.attr('href');
控制台日志(“一”);
打破
案例2:
//window.open($(this.attr('href'));
控制台日志(“两个”);
打破
案例3:
控制台日志(“三”);
打破
}
});
。可点击href{
宽度:20em;
背景色:#DDD;
文本对齐:居中;
填充:4em0;
边界半径:8px;
}

单击我-测试所有3个鼠标按钮!

在Linux Chrome 55中,我会发生以下事件:

鼠标按钮1:
单击

鼠标按钮2:
上下文菜单


鼠标中键:
auxclick

这对我来说只会触发1和3。我开始认为这是ChromeForLinux的问题……这是Chrome55的问题。在Linux上(我第一次注意到异常),Chrome已经更新到v55。在我的Windows系统上,它是v54,点击鼠标中键可以正常工作。从54更新到55导致了同样的问题。我也证实了这一点。我找到了答案请使用
e.button
而不是非标准的
e.which
。哦,对了,我忘了这不是本机属性,而是jQuery的标准化属性。我的评论仅适用于本机事件处理。注意。注意,用户可能希望在(Mac上)执行主点击保持键时,您的“链接”也会在新选项卡中打开。您还必须处理这些情况,以及您无法预料的可能的其他特定于平台的约定。尝试找到一种方法为链接使用一个真正的锚元素,并让浏览器最好地处理它。