javascript – ng焦点触发两次,ng-blur从不触发

前端之家收集整理的这篇文章主要介绍了javascript – ng焦点触发两次,ng-blur从不触发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我现在对Angular有相当的经验,但这似乎是在DOM级别传播的较低级别发生的事情.由于某些原因在我的应用程序的一部分,我在同一个输入上有ng-focus和ng-blur,但是ng-focus事件触发两次,ng-blur从不触发.
<input type="text" ng-focus="doFocus()" ng-blur="doBlur()" />

然后在我的控制器

$scope.doFocus = function(){
    console.log('focus');
}

$scope.doBlur = function(){
    console.log('blur');
 }

当我检查我的控制台时,我看到2“焦点”,没有“模糊”的消息…我已经在我的网站的其他部分进行了测试,它在其他的工作.我的猜测是与DOM有关系,但是我甚至尝试将页面上的所有内容都除外,除了输入内容,它仍然无法正常工作.有人有什么想法可能导致这个吗?

UPDATE

经过一些调试之后,我注意到焦点事件在浏览器的范围内被触发了一次,但事件在AngularJS的世界中触发了两次.我使用Chrome开发工具在所有Focus事件上设置一个断点,它只会打一次,但是如果我在控制台中记录Angular $事件,我可以看到EXACT相同的$事件,相同的时间戳在Angular中被触发两次.

解决方法

好的,所以这是一个奇怪的.在没有找到解决方案之后,我有一个同事尝试在他的机器上重现我的问题.当然,它对他来说很好,这让我觉得这是我的Chrome,所以我卸载并重新安装了一个新的Chrome实例,现在一切都很好…不知道我的Chrome发生了什么导致DOM事件得到各种各样的混乱,但至少我想出来了.

希望这可以帮助任何人在将来可能遇到这个问题.

UPDATE

我意识到这个问题是Chrome Extension:AngularJS Batarang

这个插件搞砸了我的DOM事件,导致它们不能正常启动.我从Chrome中删除了扩展程序,一切都开始运行!

猜你在找的JavaScript相关文章