[英]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>
我无法附加click
和focus
因为然后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');
});
你可以使用小黑客:
<a href="#" onfocus="console.log('focus')" onclick="this.focus()">Link</a>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.