Internet Explorer 11:在Scrollbar-MouseDown上触发MouseUp

时间:2015-10-20 13:18:57

标签: javascript jquery html internet-explorer windows-10

要解决滚动条单击导致onBlur-Event的问题,我使用“mousedown”将点击标记为“我的div”内部,并在mouseup上重置标记。

我不确定从什么时候开始(更新?)这种行为不再起作用了。我创造了一个小提琴来证明这一点:

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

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

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

版本:

  • Internet Explorer 11.0.10240.16431,Updateversion:11.0.22(KB3078071)
  • Windows 10

有趣的是,我还安装了一台安装了IE 11.0.9600.18059的Windows 7笔记本电脑。在那里我只在控制台中获取mousedown消息(即使我释放按钮也没有鼠标)!

2 个答案:

答案 0 :(得分:0)

在此处回答您的评论,以便进行格式化。

  • IE 11.0.9600.18015C0 Update 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 />

答案 1 :(得分: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();
  }
});
相关问题