0

我有一個應用程序,它不會處理鍵盤事件時需要通知它的用戶。我經常監視document.hasFocus(),它在Firefox和IE(!)中按我的需要工作,但不在Chrome中。如何知道Chrome窗口何時關注(文檔中有插件)?

如果我從位置欄開始,document.hasFocus()返回false;當我TAB時,包含插件實例的文檔獲得焦點,document.hasFocus()返回true;現在,如果再次選擇TAB,插件(本例中爲Silverlight)將獲得焦點,並且document.hasFocus()返回false。

也許這是正確的行爲,其他兩個瀏覽器不正確地返回true,但如果是這樣的話,我怎麼知道瀏覽器窗口何時有焦點?

回答

1

你可以嘗試這樣的:

var hasFocus = false, 
    toggleFocus = function() { 
     hasFocus = !hasFocus 
    }; 
window.addEventListener('focus', toggleFocus); 
window.addEventListener('blur', toggleFocus); 
+0

這是更好地使用'blur'和'focus'事件,而不是不斷地監測'document.hasFocus()',但模糊事件確實似乎被觸發當你專注於位置欄 – Denis

+0

我正在監視hasFocus()形式的SL端,因爲我也必須監視Xaml焦點......我嘗試了一些類似於之前發佈的內容,但沒有工作。將嘗試與您的代碼,艱難,也許使用addEventListener有所作爲。 –

+0

沒有工作。我之前的嘗試是使用window.onfocus和window.onblur來分配跟蹤焦點的函數,但那也不起作用。問題似乎是,Chrome認爲插件是另一個窗口,因此報告其焦點被盜了... –

相關問題