2014-02-18 479 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