2014-02-18 267 views
1

我有它在Safari上运行良好,现在和并不总是在铬工作:

app.controller(.... function($window){ 
    $window.focus(); 

    $window.onfocus = function(){ 
    $scope.inFocus = true; 
    }; 

    $window.onblur = function(){ 
    console.log("onblur"); 
    $scope.inFocus = false; 
    }; 

}); 

的的console.log并不总是触发。我在想,如果这是一个错误或我做错了什么?

更新:我尝试了@Gabe给出的解决方案。它仍然有时会崩溃,我想知道是否有其他行动干扰它。它确实看起来是随机的,但...

更新2:我仍然不知道它如何被卡住了,但我知道如何得到它粘住:

  1. 我在窗口中点击一个输入集中它。
  2. 我在输入之外单击以忽略焦点。
  3. 我切换标签并返回。它再次工作。使用API​​为angular.element
+0

的[onblur事件不与谷歌浏览工作]可能重复(http://stackoverflow.com/questions/2407679/onblur -event-not-working-with-google-chrome) –

+0

@JonathanRowny你的链接表示支持。除此之外,它在铬合金中“有时”起作用。不知道什么打破了。 –

+0

控制器在哪里?我想如果这是在特定的路线上,事件可能会被清理干净。 –

回答

0

会转而

angular.element($window).bind('blur', function(){ 
    console.log("onblur"); 
    $scope.inFocus = false; 
}); 

http://plnkr.co/edit/khYHeJlvn2uCzKeTjndM

+0

它似乎工作得更好。我会长期看到。谢谢 :)。 –

+0

我刚更新了帖子。 –

+0

你能否通过'有时休息'来澄清你的意思? – Gabe