点击Google Chrome中的链接时,焦点事件无法触发。所有其他浏览器都会触发链接的焦点事件。
<a href=# onfocus="console.log('focus')">Link</a>
我不想附加事件onmousedown,而是onfocus。
任何人都有解决方法的想法。
修改
我肯定会认为这是一个错误,因为所有其他可聚焦元素都会引发关注点击。
即使是具有tabindex
触发器的非焦点元素也会专注于点击Google Chrome。
<div tabindex="-1" onfocus="console.log('focus')">div</div>
我无法附加click
和focus
,因为然后点击,其他浏览器会调用该函数两次。我无法检测到此功能,因为它需要用户
交互,我不会做用户代理字符串检测,因为它错了。
使用这个html:
<a href=# onfocus="console.log('focus')" onmousedown="console.log('mousedown')">Link</a>
它们是否可以使第二个onmousedown
调用无效,以防止在非谷歌浏览器中调用该函数两次。
编辑2:
经过一些进一步的测试<input type=radio>
也无法在Google Chrome中调用焦点。
为什么世界上有像这样的谷歌浏览器,而Opera,IE和Firefox都可以。令人抓狂的是,当我在Android设备上试用它时,移动webkit浏览器甚至会引发对链接的关注。
答案 0 :(得分:3)
实际上工作得很好,只是单击链接不会触发焦点事件(尝试选项卡,你会看到事件触发)。我不认为这是一个错误,为什么不只是安全防范并同时使用它们?
答案 1 :(得分:1)
你可以采取一项措施来避免在工作浏览器上弹出双focus
个事件,同时让focus
事件在Chrome上弹出,就是在点击事件中检查是否有任何事件页面上显示focus
,如果没有,则触发focus
事件。
使用jQuery可以这样做:
$('a').click(function(e){
if(!$('*:focus').length) $(this).trigger('focus');
});
答案 2 :(得分:0)
你可以使用小黑客:
<a href="#" onfocus="console.log('focus')" onclick="this.focus()">Link</a>