2016-02-01 69 views
0

如何檢測時用戶focus在這個選項卡中,當用戶無焦點的當前選項卡 我想這代碼焦點標籤事件的Javascript

window.onfocus = function() { 
    alert('Got focus'); 
} 

爲什麼這不是工作?

+0

隨着標籤你的意思是一個HTML元素?你在使用組件庫嗎?或者選項卡是指瀏覽器的選項卡? – miso

+0

[有沒有辦法檢測瀏覽器窗口當前是否處於活動狀態?](http://stackoverflow.com/questions/1060008/is-there-a-way-to-detect-ifa-a-瀏覽器窗口不是當前活動的) –

+0

你在嘗試使用哪種瀏覽器? – christopher

回答

1

你正在尋找的事件是visibilityChangehttps://developer.mozilla.org/en-US/docs/Web/Events/visibilitychange

當事件如果被炒了,你可以檢查網頁是否可見通過文件[隱藏]。查看https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API作爲一個工作示例。

+0

這是一個跨瀏覽器解決方案嗎? – christopher

+0

雖然這適用於很多情況,但它確實會跟蹤可見性,而不是專注於什麼。因此,如果您打開了兩個瀏覽器窗口並選擇第二個,則該事件不會觸發。當然,這取決於情況。 – GMchris

+0

瀏覽器支持顯示在第一個鏈接的底部,但所有最近的瀏覽器都支持它。 – Mijamo

0

這是當前標籤獲得或失去焦點時用於跟蹤的API。你可以像這樣拼寫它,它幾乎適用於所有的瀏覽器。我建議使用的語法如下:

window.addEventListener('focus', function(e){ 
    console.log('Focused'); 
} 

window.addEventListener('blur', function(e){ 
    console.log('Unfocused'); 
} 

一個原因,我能想到的不觸發事件是,你坐在大多是在瀏覽器的控制檯。如果開發工具是您實際「關注」的,那麼Window不會收到焦點或藍色事件。

+0

如果你可以提供一個JSFiddle,我會認爲這是一個更完整的答案。 – christopher

+0

結果面板在內部點擊時應顯示「聚焦」,而在外部點擊時顯示爲「未聚焦」。這也應該用於更改標籤。 https://jsfiddle.net/hy9yL2ad/ – GMchris

+0

害怕它不適合我!版本47.0.2526.111(64位)Chrome。 – christopher

0

對於特定HTML元素.....

$("#elementId").focus(function(){ 
     //fire when element is focused... 
    }); 
    $("#elementId").blur(function(){ 
     //fire when element is unfocused... 
    }); 

對於窗口.....

$(function() { 
    $(window).focus(function() { 
     console.log('Focus event'); 
    }); 

    $(window).blur(function() { 
     console.log('un focus'); 
    }); 
});