2013-04-05 76 views
3

我正在研究鍵盤輔助功能。我有一個Flash對象,它位於頁面內部,爲了阻止焦點陷入其中,我添加了標籤監聽器,這些監聽器通過ExternalInterface來討論一些JavaScript函數。關注瀏覽器

JavaScript查找下一個可用元素,其中tabIndex並調用focus()。到現在爲止還挺好。但是,如果插件是頁面上的最後一個可放置項目(或者在反向標籤時爲第一個項目),則不會切換到任何元素。通常這會將焦點設置到瀏覽器窗口,所以我想保持這種行爲。

因此,我的問題:是否有可能以編程方式專注於瀏覽器的鉻?更好的是,如果我可以模仿向前撥號。如果可能的話,我還想避免在閃光燈之前/之後添加額外的可放置組件,除非我可以使它們對於鼠標鍵盤都無法看到。

+0

試試$(window).focus()呢? – Derek 2013-04-05 19:39:42

+0

「聚焦瀏覽器」一般是通過'window.focus();' – jbabey 2013-04-05 19:40:05

+0

@Derek&jbabey:'$(window).focus()'什麼也不做 – Dave 2013-04-05 19:43:35

回答

0

設置焦點沒有文字內容的虛擬錨,在文件的頂部,似乎工作:

document.getElementsByTagName('a')[0].focus(); 

http://jsfiddle.net/4NA5u/1/

+0

正如我所說,我想避免添加額外的tabbable組件,除非它們可以被隱藏在鍵盤上;這種方式意味着用戶需要額外按壓標籤才能過去。所以我會等待看看有沒有人有另一種方式。 – Dave 2013-04-05 20:03:42

+0

好吧,沒有人有更好的主意,所以我現在就這樣做。 – Dave 2013-04-06 12:34:10

+0

如何將焦點放在任何可聚焦的元素上,並立即模糊它? – bfavaretto 2013-04-06 21:57:33

2

在我自己的搜索中找到了類似的答案。如果您想將焦點放在當前焦點元素上,請使用document.activeElement;如果您希望在不受支持的情況下進行回退,請將注意力集中在文檔的父元素上。這應該支持所有已知的瀏覽器,據我所知:

var activeElement = document.activeElement; 
if (activeElement) { 
    activeElement.blur(); 
} else if (document.parentElement) { 
    document.parentElement.focus(); 
} else { 
    window.focus(); 
}