Google Chrome Javascript Link Bug

时间:2011-06-19 19:49:24

标签: javascript google-chrome

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

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

我不想附加事件onmousedown,而是onfocus。

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

修改

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

即使是具有tabindex触发器的非焦点元素也会专注于点击Google Chrome。

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

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

使用这个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浏览器甚至会引发对链接的关注。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

你可以采取一项措施来避免在工作浏览器上弹出双focus个事件,同时让focus事件在Chrome上弹出,就是在点击事件中检查是否有任何事件页面上显示focus,如果没有,则触发focus事件。

使用jQuery可以这样做:

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

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

答案 2 :(得分:0)

你可以使用小黑客:

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