使用JS取得焦點(diǎn)(focus)元素代碼
更新時(shí)間:2014年03月22日 16:13:40 作者:
這篇文章主要介紹了使用JS取得焦點(diǎn)(focus)元素的具體實(shí)現(xiàn),需要的朋友可以參考下
對于良好的用戶體驗(yàn)來說,網(wǎng)站/web app的可訪問性和可用性,以及功能 都是至關(guān)重要的。
當(dāng)我們的網(wǎng)站運(yùn)行良好/體驗(yàn)很好的時(shí)候,用戶是意識不到的,但我們做得不好時(shí)他們肯定會感覺到。 應(yīng)用程序的可用性和可訪問性的一個重要組成部分是輸入焦點(diǎn)(focus)的處理,但這又是開發(fā)人員常常會忽視的一點(diǎn)。
對輸入焦點(diǎn)處理很差的一個例子: 在點(diǎn)擊一個鏈接以后打開一個窗口,但卻不將光標(biāo)聚焦到窗口中的任何元素內(nèi)。 甚至更糟的是: 聚焦到模態(tài)窗口中的某個元素,但在關(guān)閉以后焦點(diǎn)照樣不返回。 理想情況下,在觸發(fā)鏈接時(shí)會保存一個引用,然后將光標(biāo)聚焦到新窗口,并在窗口關(guān)閉時(shí)把光標(biāo)重新移回去。
但假如你不知道輸入光標(biāo)現(xiàn)在在哪個元素上怎么辦? 通過 document.activeElement 屬性我們可以取得當(dāng)前文檔中獲得焦點(diǎn)的元素!
The JavaScript
使用 document.activeElement 來查找當(dāng)前選中的元素是很容易的事:
var focusedElement = document.activeElement;
/* 比如某個示例:
var triggerElement = document.activeElement;
myModal = new MyModal({
onOpen: function() {
this.container.focus();
},
onClose: function() {
triggerElement.focus();
}
});
*/
這個屬性不僅在常規(guī)輸入元素上可用,包括表單字段或 <a> 標(biāo)簽鏈接,而且只要設(shè)置了 tabIndex 屬性的任意元素都是可用的。
我喜歡 document.activeElement 的原因是,不需要使用事件監(jiān)聽或委托監(jiān)聽器來追蹤記錄下那個元素獲得了焦點(diǎn) —— 您可以隨時(shí)獲取這個屬性。 當(dāng)然在使用這樣的特性之前你應(yīng)該做大量的測試—— 是否在跨瀏覽器或競態(tài)條件下出什么BUG。 總而言之,我對它很滿意,覺得它非??煽?
當(dāng)我們的網(wǎng)站運(yùn)行良好/體驗(yàn)很好的時(shí)候,用戶是意識不到的,但我們做得不好時(shí)他們肯定會感覺到。 應(yīng)用程序的可用性和可訪問性的一個重要組成部分是輸入焦點(diǎn)(focus)的處理,但這又是開發(fā)人員常常會忽視的一點(diǎn)。
對輸入焦點(diǎn)處理很差的一個例子: 在點(diǎn)擊一個鏈接以后打開一個窗口,但卻不將光標(biāo)聚焦到窗口中的任何元素內(nèi)。 甚至更糟的是: 聚焦到模態(tài)窗口中的某個元素,但在關(guān)閉以后焦點(diǎn)照樣不返回。 理想情況下,在觸發(fā)鏈接時(shí)會保存一個引用,然后將光標(biāo)聚焦到新窗口,并在窗口關(guān)閉時(shí)把光標(biāo)重新移回去。
但假如你不知道輸入光標(biāo)現(xiàn)在在哪個元素上怎么辦? 通過 document.activeElement 屬性我們可以取得當(dāng)前文檔中獲得焦點(diǎn)的元素!
The JavaScript
使用 document.activeElement 來查找當(dāng)前選中的元素是很容易的事:
復(fù)制代碼 代碼如下:
var focusedElement = document.activeElement;
/* 比如某個示例:
var triggerElement = document.activeElement;
myModal = new MyModal({
onOpen: function() {
this.container.focus();
},
onClose: function() {
triggerElement.focus();
}
});
*/
這個屬性不僅在常規(guī)輸入元素上可用,包括表單字段或 <a> 標(biāo)簽鏈接,而且只要設(shè)置了 tabIndex 屬性的任意元素都是可用的。
我喜歡 document.activeElement 的原因是,不需要使用事件監(jiān)聽或委托監(jiān)聽器來追蹤記錄下那個元素獲得了焦點(diǎn) —— 您可以隨時(shí)獲取這個屬性。 當(dāng)然在使用這樣的特性之前你應(yīng)該做大量的測試—— 是否在跨瀏覽器或競態(tài)條件下出什么BUG。 總而言之,我對它很滿意,覺得它非??煽?
相關(guān)文章
JS操作對象數(shù)組實(shí)現(xiàn)增刪改查實(shí)例代碼
JS提供了很多方便操作數(shù)組的方法,這篇文章主要給大家介紹了關(guān)于JS操作對象數(shù)組實(shí)現(xiàn)增刪改查的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07JS實(shí)現(xiàn)輸入框提示文字點(diǎn)擊時(shí)消失效果
這篇文章主要介紹了JS實(shí)現(xiàn)輸入框提示文字點(diǎn)擊時(shí)消失效果,涉及javascript針對鼠標(biāo)的響應(yīng)及事件監(jiān)聽機(jī)制相關(guān)技巧,需要的朋友可以參考下2016-07-07基于el-slider實(shí)現(xiàn)一個能拖動的時(shí)間范圍選擇器
這篇文章主要介紹了基于el-slider實(shí)現(xiàn)一個能拖動的時(shí)間范圍選擇器,并通過實(shí)例代碼介紹了基于element-ui el-slider實(shí)現(xiàn)滑動限位器的方法,需要的朋友可以參考下2024-02-02JavaScript實(shí)現(xiàn)同一個頁面打開多張圖片
這篇文章主要介紹了JavaScript實(shí)現(xiàn)同一個頁面打開多張圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12JS函數(shù)報(bào)錯Uncaught ReferenceError: XX is not
這篇文章主要介紹了JS函數(shù)報(bào)錯Uncaught ReferenceError: XX is not defined問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10