2015-10-20 54 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

相關問題