javascript tabIndex屬性
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
tabIndex 的用處很簡(jiǎn)單,就是利用tab鍵遍歷頁(yè)面的表單元素和鏈接,按照tabindex的大小決定順序。雖然微不足道,但細(xì)節(jié)處見(jiàn)真功夫,這是任何一個(gè)WEB應(yīng)用應(yīng)當(dāng)具備的親用力,保證用戶(hù)在沒(méi)有鼠標(biāo)的情況下(如WAP)仍然可以正常使用。 點(diǎn)擊運(yùn)行可以看到效果:<!doctype html> [Ctrl+A 全選 提示:你可先修改部分代碼,再按運(yùn)行]
根據(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部分提供了一條鏈接,是專(zhuān)門(mén)說(shuō)明如何用javascript設(shè)置獲取與移除tabIndex屬性,不過(guò)已有些日子了,許多主流瀏覽器都更新了版本。因此我再測(cè)試了一次。測(cè)試程序見(jiàn)下面的運(yùn)行框: 點(diǎn)擊運(yùn)行可以看到效果:<?xml version="1.0" encoding="UTF-8"?> [Ctrl+A 全選 提示:你可先修改部分代碼,再按運(yùn)行]
tabindex為1的input元素 IE6 IE7 IE8 FF3.55 opeta10.10 Safari4.0 chrome4.02 此表格與《Getting, setting, and removing tabindex values with JavaScript》一文中對(duì)應(yīng)的表格相比,全部為1。 我們?cè)賮?lái)看當(dāng)表單元素沒(méi)有顯示地設(shè)置tabIndex屬性時(shí),tabIndex是否存在,存在的話(huà)其默認(rèn)值是多少。 沒(méi)有tabIndex的input元素 IE6 IE7 IE8 FF3.55 opeta10.10 Safari4.0 chrome4.02 如果測(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 我們看這篇文章,標(biāo)準(zhǔn)瀏覽器的設(shè)定其涇渭分明,-1給那些不該擁有它的元素,0是默認(rèn)分配給那些表單元素與鏈接,如果用戶(hù)定義了就返回用戶(hù)的認(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 最后移除屬性的情況,移除結(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 該文章在 2010/12/31 10:00:15 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |