繁体   English   中英

Google Chrome Javascript Link Bug

[英]Google Chrome Javascript Link Bug

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

<a href=# onfocus="console.log('focus')">Link</a>

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

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

编辑:

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

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

<div tabindex="-1" onfocus="console.log('focus')">div</div>

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

使用这个HTML:

<a href=# onfocus="console.log('focus')" onmousedown="console.log('mousedown')">Link</a>

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

编辑2:

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

这实际上工作正常,只是单击链接不会触发焦点事件(尝试选项卡,你会看到事件触发)。 我不认为这是一个错误,为什么不只是安全防范并使用两者?

你可以采取一种方法来避免双focus事件在工作浏览器上弹出,同时仍然让focus事件在Chrome上弹出,就是在点击事件上检查是否有任何focus在页面上,如果没有,则触发focus事件。

使用jQuery可以这样做:

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

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

你可以使用小黑客:

<a href="#" onfocus="console.log('focus')" onclick="this.focus()">Link</a>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM