Google Chrome Javascript Link Bug

Lim*_*ime 6 javascript google-chrome

单击Google Chrome中的链接时,焦点事件无法触发.所有其他浏览器都会触发链接的焦点事件.

<a href=# onfocus="console.log('focus')">Link</a>
Run Code Online (Sandbox Code Playgroud)

我不想把这个事件附在onmousedown上,而是onfocus.

任何人都有一个解决方法的想法.

编辑:

我肯定会认为这是一个错误,因为所有其他可聚焦元素都会引发关注点击.

即使是具有tabindex触发器的非焦点元素也专注于谷歌浏览器中的点击.

<div tabindex="-1" onfocus="console.log('focus')">div</div>
Run Code Online (Sandbox Code Playgroud)

我无法附加到两者click,focus因为然后onclick,其他浏览器会调用该函数两次.我无法检测到这个功能,因为它需要用户交互,我不会做用户代理字符串检测,因为它错了.

使用这个HTML:

<a href=# onfocus="console.log('focus')" onmousedown="console.log('mousedown')">Link</a>
Run Code Online (Sandbox Code Playgroud)

它们是否可以使第二个onmousedown调用无效,以防止在非谷歌浏览器中调用该函数两次.

编辑2:

经过一些进一步的测试<input type=radio>也无法在谷歌浏览器中调用焦点.为什么世界上有像这样的谷歌浏览器,而Opera,IE和Firefox都可以.令人疯狂的是,当我在Android设备上试用它时,移动webkit浏览器甚至会引发对链接的关注.

Nik*_*las 1

focus为了避免在工作浏览器上弹出双重事件,同时仍然让focus事件在 Chrome 上弹出,您可以采取的一种解决方法是在单击事件上检查focus页面上是否有任何内容,如果没有,则触发该focus事件。

使用 jQuery 可以这样完成:

$('a').click(function(e){
     if(!$('*:focus').length) $(this).trigger('focus');         
});
Run Code Online (Sandbox Code Playgroud)

示例: http: //jsfiddle.net/niklasvh/qmcUt/