当一个元素有
以下是示例:
onFocus
事件处理程序,它会改变元素的位置时,onClick
事件处理程序不会被触发。这可能是因为点击事件实际上是mousedown
和mouseup
事件的组合。首先触发mousedown
事件,然后元素获得焦点并且处理程序改变元素的位置。然后触发mouseup
事件,但此时光标在某个不同的元素上,因此不会调用单击处理程序。以下是示例:
var container = document.getElementById('container');
var button = document.getElementById('button');
container.style.position = "absolute";
container.style.marginTop = "40px";
button.addEventListener('click', function() {
alert('Clicked');
}, false);
button.addEventListener('focus', function() {
container.style.top = (container.getBoundingClientRect().top - 10) + 'px';
this.blur();
}, false);
<!DOCTYPE html>
<html>
<head>
<title>ClickFocusIssue</title>
</head>
<body>
<div id="container">
<button id="button">Button</button>
</div>
</body>
</html>
特别是,我有一个带有自定义滚动条的可滚动表格。当表格中的行获得焦点时,例如使用Tab键,我需要它向上或向下滚动。但我也需要处理点击事件。
有没有一种好的方法同时处理这两个事件?