为什么人工触发点击事件不能使元素获得焦点?

4

通过合成点击并不会导致焦点切换到该元素,但硬件触发的点击会。

我正在尝试模拟对一个元素(例如tabindex为div)的合成点击,该元素上绑定了一个在焦点上的回调。我不想显式地调用该元素上的焦点,因为该元素可以通过单击或键盘Tab获得焦点。

我的JSFiddle

代码:

$('button.trigger').click(function(){
    $('div#target').trigger('click');
});

$('button.trigger1').click(function(){
    var event = new MouseEvent('click');
    var target = document.getElementById('target'); 
    target.dispatchEvent(event);
});

$('div#target').click(function(){
    $(this).addClass('selected');
});

HTML:

<div id="target" tabindex="-1"></div>
<button class="trigger">Click to trigger click</button>
<button class="trigger1">Click to dispatch click</button>

CSS:

div{
    height:100px;
    width:100px;
    border:10px solid black;
}

#target:focus{
    background-color:#aaa;
}
.selected{
    border-color:red;
}

2
触发器只是重新执行处理程序,这是设计上的。 - user3455395
1个回答

5

硬件点击这种说法是不存在的。

聚焦于鼠标按下时发生。

如果鼠标在同一元素上释放,则也会触发点击事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接