我有2個元素。第一個元素有一個blur
事件,第二個元素有一個mousedown
事件。第二個元素上的mousedown
事件將焦點返回到第一個元素,但第一個元素上的blur
由於某種原因而被觸發,即使第一個元素在第二個元素之前未被聚焦也是如此。「模糊」事件被無理觸發?
爲什麼會發生這種情況?這是(不知何故)所需的行爲,或者這是一種錯誤?
<!DOCTYPE html>
<html>
<head>
<title>Bug?</title>
</head>
<body>
<input type="text" />
<br /><br />
<button>Click me to focus on the input</button>
<br /><br />
<input type="text" />
<script type="text/javascript">
document.getElementsByTagName('input')[0].addEventListener('blur', function(e){
console.log('blur', e);
});
document.getElementsByTagName('button')[0].addEventListener('mousedown', function(e){
console.log('mousedown', e);
document.getElementsByTagName('input')[0].focus();
});
</script>
</body>
</html>
https://jsfiddle.net/rsh5aopg/
我期待以下行爲:mousedown(專注於按鈕) - >函數更改焦點(專注於輸入) - > mouseup(專注於按鈕=>輸入模糊)。 – Edwin
@Edwin是正確的,或者看起來如此。出於興趣,你爲什麼使用'mousedown'而不是'click'? – George
我不這麼認爲......鼠標點火/之後/模糊。這些事件以mousedown,blur,mouseup,click的順序點燃。我需要在模糊運行之前做一些事情,這就是爲什麼我使用mousedown而不是點擊。 https://stackoverflow.com/questions/22867022/onblur-vs-onclick-timing –