谷歌浏览器Javascript链接错误
Google Chrome Javascript Link Bug
在谷歌chrome中单击链接时,焦点事件无法触发。所有其他浏览器都会触发链接的焦点事件。
<a href=# onfocus="console.log('focus')">Link</a>
我不想将事件附加到mousedown上,而是附加到onfocus上。
任何人都有解决办法的想法。
编辑:
我肯定会认为这是一个错误,因为所有其他可聚焦元素都会在点击时触发聚焦。
即使是tabindex
触发器的不可聚焦元素也会在谷歌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>
也未能在谷歌chrome中调用焦点。为什么谷歌chrome是这样的,而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>
相关文章:
- $q.reject和处理AngularJS链接承诺中的错误
- jquery备用链接错误
- 如果URL's链接返回错误
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 第二个引导程序导航栏链接打开第一个(错误的)导航栏;jquery
- fs extra:错误:EPERM:不允许操作,取消链接
- CasperJS:如何点击框架中的链接,关闭页面,没有错误
- 链接程序时出现WebGL错误
- 单击链接时出现函数未定义错误
- 如何链接javascript承诺和错误
- 创建到电子表格创建错误中的文件的链接的脚本“;无法转换“”;
- JavaScript链接错误
- 内部链接返回空错误,我在 Javascript 中找不到错误.外部链接工作得很好
- HTML 内容中的 CSS 链接在加载 HTML 时会引发错误
- Gulp 在 gulp.src() 中的符号链接上给出错误
- 页面加载时出现浏览器链接 JS 错误
- 延迟链接 - 然后在上一个调用完成但出现错误时调用成功回调
- j查询 长按链接时的移动错误
- 从timeline2.6.1的例子不工作-错误链接是未定义的时间线代码0
- Grails资源标签生成错误链接