2015-10-20 117 views
1

要解决滚动条点击导致onBlur事件的问题,我使用“mousedown”将点击标记为“内部”我的div和mouseup上我将重置标志。Internet Explorer 11:在滚动条上触发的MouseUp-MouseDown

我不确定自何时(更新?)此行为不再起作用。我创建了一个小提琴证明这一点:

http://jsfiddle.net/30x1jr6v/1/

$(document).mousedown(function (documentEventObject) { 
    console.log('mousedown'); 
}); 
$(document).mouseup(function (documentEventObject) { 
    console.log('mouseup'); 
}); 

如果您使用Chrome,鼠标松开事件触发,当释放滚动条上的鼠标按钮。在IE 11中,mouseup事件与mousedown事件一起触发......有没有人遇到同样的问题?

版本:

  • 的Internet Explorer 11.0.10240.16431,Updateversion:11.0.22(KB3078071)
  • 视窗10

有趣的是我也有一个视窗7笔记本电脑的IE 11.0.9600.18059安装。在那里,我只在控制台中获得mousedown消息(即使释放按钮时也不会弹出鼠标)!

+1

不,在IE11中,我只在滚动条上获取mousedown事件,但在释放时不会发生mouseup事件。 – wwwmarty

+0

真的吗?你有什么确切的版本?我将用我的版本更新我的问题...我在另一台机器上测试了相同的行为 - 两者都运行Windows 10. – NoRyb

回答

0

我解决我的问题与定时器来代替鼠标松开(不失去我的输入焦点被点击滚动条时):

var mouseDownWasInMyDiv = false; 

$(myDiv).mousedown(function() { 
    mouseDownWasInMyDiv = true; 
    setTimeout(function() { 
    mouseDownWasInMyDiv = false; 
    }, 0); 
}); 

$(myInput).blur(function() { 
    if (mouseDownWasInMyDiv) { 
    mouseDownWasInMyDiv = false; // should be set in Timeout but can also happen without click (e.g. TAB) 
    refocus(); 
    } 
}); 
0

在这里回答你的评论,格式化。

  • IE 11.0.9600.18015C0更新11.0.23
  • Windows 7企业版

我在工作,不能测试你的小提琴,所以用这个来代替。 jQuery的每个版本相同的行为......

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script> 
<script> 
$(document).mousedown(function (documentEventObject) { 
    console.log('mousedown'); 
}); 
$(document).mouseup(function (documentEventObject) { 
    console.log('mouseup'); 
}); 
</script> 
<br /> 
<br /> 
<br /> 
<br /> 
<br /> 
<br /> 
<br /> 
<br /> 
+0

我通过制作html文件并使用Chrome和IE11打开它并测试脚本,窗口很小,滚动条出现。结果与我的问题相同:在Chrome上,我分别得到了mousedown/mouseup - 在IE上,我通过mousedown click获得了mousedown&mouseup。 – NoRyb

相关问题