欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript tabIndex屬性

 更新時(shí)間:2009年12月09日 04:36:53   作者:  
圍繞表單的可訪問(wèn)性與交互性上,各瀏覽器都下了很大工夫,比如fieldset與legend等用于增強(qiáng)區(qū)域感的元素,for,accessKey,defaultValue,maxlength,tabIndex等用于交互或提示的屬性。不過(guò),今天只講tabIndex。
tabIndex 的用處很簡(jiǎn)單,就是利用tab鍵遍歷頁(yè)面的表單元素和鏈接,按照tabindex的大小決定順序。雖然微不足道,但細(xì)節(jié)處見(jiàn)真功夫,這是任何一個(gè)WEB應(yīng)用應(yīng)當(dāng)具備的親用力,保證用戶在沒(méi)有鼠標(biāo)的情況下(如WAP)仍然可以正常使用。

下面的例子,為了突現(xiàn)tabIndex控制焦點(diǎn)跳轉(zhuǎn)的能力,特意把順序打亂了。請(qǐng)先選中第一個(gè)文本域,然后按tab鍵觀察。

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]

根據(jù)這篇文章的介紹,W3C DOM與Netscape僅是把tabIndex添加到有限的幾個(gè)元素上:a, area, button, input, object, select, textarea,也就是所謂的表單元素與鏈接。IE4則比它多以下元素: applet, body, div, embed, isindex, marquee, span, table, 與td,到了IE5,幾乎所有能渲染的元素都擁有這屬性(像br元素就是不能渲染的)。tabIndex的值,根據(jù)W3C的規(guī)定,范圍在0到 32767。

在jQuery的源碼中,講到attr部分提供了一條鏈接,是專門(mén)說(shuō)明如何用javascript設(shè)置獲取與移除tabIndex屬性,不過(guò)已有些日子了,許多主流瀏覽器都更新了版本。因此我再測(cè)試了一次。測(cè)試程序見(jiàn)下面的運(yùn)行框:


[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]

tabindex為1的input元素 IE6 IE7 IE8 FF3.55 opeta10.10 Safari4.0 chrome4.02
el.tabIndex 1 1 1 1 1 1 1
el.getAttribute("tabindex") 1 1 1 1 1 1 1
el.getAttribute("tabIndex") 1 1 1 1 1 1 1

此表格與《Getting, setting, and removing tabindex values with JavaScript》一文中對(duì)應(yīng)的表格相比,全部為1。

我們?cè)賮?lái)看當(dāng)表單元素沒(méi)有顯示地設(shè)置tabIndex屬性時(shí),tabIndex是否存在,存在的話其默認(rèn)值是多少。

沒(méi)有tabIndex的input元素 IE6 IE7 IE8 FF3.55 opeta10.10 Safari4.0 chrome4.02
el.tabIndex 0 0 0 0 0 0 0
el.getAttribute("tabindex") 0 0 0 null null null null
el.getAttribute("tabIndex") 0 0 0 null null null null

如果測(cè)試對(duì)象為一個(gè)沒(méi)有顯式設(shè)置tabIndex屬性的div元素呢?在W3C標(biāo)準(zhǔn)中,只有表單元素與鏈接才能tabIndex屬性。

沒(méi)有tabIndex的div元素 IE6 IE7 IE8 FF3.55 opeta10.10 Safari4.0 chrome4.02
el.tabIndex 0 0 0 -1 -1 -1 -1
el.getAttribute("tabindex") 0 0 0 null null null null
el.getAttribute("tabIndex") 0 0 0 null null null null

我們看這篇文章,標(biāo)準(zhǔn)瀏覽器的設(shè)定其涇渭分明,-1給那些不該擁有它的元素,0是默認(rèn)分配給那些表單元素與鏈接,如果用戶定義了就返回用戶的認(rèn)定值,即便它是div。

不過(guò)在IE中,非表單元素與鏈接無(wú)論tabIndex是否定義都返回0,那么我們?cè)趺粗涝厥欠褚讯x過(guò)呢?《Getting, setting,……》給出一個(gè)非常好的辦法。利用getAttributeNode 獲取對(duì)應(yīng)的屬性節(jié)點(diǎn)。在IE中,如果是默認(rèn)屬性或已定義屬性,將會(huì)返回一個(gè)對(duì)象,標(biāo)準(zhǔn)瀏覽器則只有當(dāng)我們顯示地設(shè)置這屬性時(shí)才返回對(duì)象,其他一律為null。在IE中,如果是默認(rèn)屬性,沒(méi)有為其賦值,它有一個(gè)特殊的specified ,顯示為false,如果賦值了,則為true。標(biāo)準(zhǔn)瀏覽器沒(méi)有這東西,也不需要此東西。

再看為沒(méi)有tabIndex屬性元素賦值的情況el.tabIndex=value就不用說(shuō)了,肯定行得通,dom 0年代的實(shí)現(xiàn)。如果一個(gè)元素用setAttribute("tabIndex",3)賦值,注意是大寫(xiě),那么無(wú)論是el.tabIndex還是el.getAttribute("tabIndex")還是el.getAttribute("tabindex")都能得到3。如果是setAttribute("tabindex",3)賦值,IE則全為0,標(biāo)準(zhǔn)瀏覽器則全為3,因此還是用前者吧。

沒(méi)有tabIndex的input元素 IE6 IE7 IE8 FF3.55 opeta10.10 Safari4.0 chrome4.02
el.tabIndex=3 3 3 3 3 3 3 3
el.setAttribute("tabIndex",3) 3 3 3 3 3 3 3
el.setAttribute("tabindex",3) 0 0 0 3 3 3 3

最后移除屬性的情況,移除結(jié)果后分別用el.tabIndex,el.getAttribute("tabIndex"),el.getAttribute("tabindex")測(cè)試。誰(shuí)都沒(méi)有把握移除干凈,從目前的情況來(lái)看,只有選擇el.removeAttribute("tabIndex")。

tabIndex為3的input元素 IE6 IE7 IE8 FF3.55 opeta10.10 Safari4.0 chrome4.02
el.removeAttribute("tabIndex") 0,0,0 0,0,0 0,0,0 0,null,null 0,null,null 3,null,null 3,null,null
el.removeAttribute("tabindex") 3,3,3 3,3,3 3,3,3 0,null,null 0,null,null 3,null,null 3,null,null
delete el.tabIndex errer errer errer 3,3,3 0,null,null 3,3,3 undefined,null,null

相關(guān)文章

  • window.onload使用指南

    window.onload使用指南

    我們經(jīng)常使用 window.onload 來(lái)處理頁(yè)面,當(dāng)頁(yè)面加載完成做一些事情。但這個(gè) window.onload 是頁(yè)面全部加載完成,甚至包括圖片,下面我們就來(lái)詳細(xì)探討下window.onload的用法
    2015-09-09
  • ES6擴(kuò)展運(yùn)算符用法實(shí)例分析

    ES6擴(kuò)展運(yùn)算符用法實(shí)例分析

    這篇文章主要介紹了ES6擴(kuò)展運(yùn)算符用法,結(jié)合實(shí)例形式分析了ES6擴(kuò)展運(yùn)算符的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-10-10
  • js實(shí)現(xiàn)背景圖片感應(yīng)鼠標(biāo)變化的方法

    js實(shí)現(xiàn)背景圖片感應(yīng)鼠標(biāo)變化的方法

    這篇文章主要介紹了js實(shí)現(xiàn)背景圖片感應(yīng)鼠標(biāo)變化的方法,實(shí)例分析了javascript針對(duì)鼠標(biāo)事件與css樣式圖片的操作技巧,需要的朋友可以參考下
    2015-02-02
  • JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(四) ECMAScript中的類型轉(zhuǎn)換

    JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(四) ECMAScript中的類型轉(zhuǎn)換

    ECMAScript中的類型轉(zhuǎn)換,學(xué)習(xí)js的朋友可以看看
    2012-02-02
  • js 中 document.createEvent的用法

    js 中 document.createEvent的用法

    用該方法創(chuàng)建了 Event 對(duì)象以后,必須用上表中所示的初始化方法初始化對(duì)象。關(guān)于初始化方法的詳細(xì)信息,請(qǐng)參閱 Event 對(duì)象參考。
    2010-08-08
  • Javascript常用字符串判斷函數(shù)代碼分享

    Javascript常用字符串判斷函數(shù)代碼分享

    這篇文章主要分享了一段Javascript常用字符串判斷函數(shù)的代碼,基本上常見(jiàn)的字符串判斷都涵蓋在內(nèi)了,非常實(shí)用,小伙伴們參考下。
    2014-12-12
  • Bootstrap輪播圖的使用和理解4

    Bootstrap輪播圖的使用和理解4

    這篇文章主要為大家詳細(xì)介紹了關(guān)于Bootstrap輪播圖的使用和理解的學(xué)習(xí)記錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • ECMAScript?數(shù)據(jù)類型之Number類型

    ECMAScript?數(shù)據(jù)類型之Number類型

    這篇文章主要介紹了?ECMAScript?數(shù)據(jù)類型之Number類型,Number類型使用IEEE?754格式表示整數(shù)和浮點(diǎn)值,更多相關(guān)內(nèi)容請(qǐng)需要的小伙伴參考下面文章內(nèi)容
    2022-06-06
  • 淺析JavaScript聲明變量

    淺析JavaScript聲明變量

    JavaScript的變量聲明語(yǔ)句無(wú)論出現(xiàn)在何處,都會(huì)先于其他代碼首先被執(zhí)行,本文給大家介紹javascript聲明變量相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • javascript input輸入框模糊提示功能的實(shí)現(xiàn)

    javascript input輸入框模糊提示功能的實(shí)現(xiàn)

    這篇文章主要介紹了javascript input輸入框模糊提示功能的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)本能幫助到大家,需要的朋友可以參考下
    2017-09-09

最新評(píng)論