gpt4 book ai didi

javascript - ng-focus 触发两次,而 ng-blur 从不触发

转载 作者:可可西里 更新时间:2023-11-01 02:55:08 25 4
gpt4 key购买 nike

我现在对 Angular 有相当的经验,但这似乎是在 DOM 事件传播方式的较低层次上发生的事情。由于某些原因,在我的应用程序的一部分中,我在同一 input 上有 ng-focusng-blur,但是 ng -focus 事件触发两次,ng-blur 永远不会触发。

<input type="text" ng-focus="doFocus()" ng-blur="doBlur()" />

然后在我的 Controller 中

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

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

当我检查我的控制台时,我看到 2 个“焦点”消息,没有“模糊”消息...我已经在我网站的其他部分对此进行了测试,它在其他一些部分也有效。我的猜测是它与 DOM 有关,但我什至尝试拉出页面上除了 input 之外的所有内容,但它仍然无法正常工作。有谁知道是什么原因造成的?

更新

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

最佳答案

好的..所以这有点奇怪。在我自己找不到解决方案之后,我让一位同事尝试在他的机器上重现我的问题。当然,它对他来说工作得很好。这让我觉得这是我的 Chrome,所以我卸载并重新安装了一个新的 Chrome 实例,现在一切都很好......不确定我的 Chrome 发生了什么导致 DOM 事件变得一团糟,但至少我想通了。

希望这对将来可能遇到此问题的任何人有所帮助。

更新

我意识到问题出在 Chrome 扩展:AngularJS Batarang

此插件扰乱了我的 DOM 事件并导致它们无法正确触发。我从 Chrome 中删除了扩展程序,一切都开始工作了!

关于javascript - ng-focus 触发两次,而 ng-blur 从不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com