国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript tabIndex屬性

2019-11-21 00:55:23
字體:
來源:轉載
供稿:網友
tabIndex 的用處很簡單,就是利用tab鍵遍歷頁面的表單元素和鏈接,按照tabindex的大小決定順序。雖然微不足道,但細節處見真功夫,這是任何一個WEB應用應當具備的親用力,保證用戶在沒有鼠標的情況下(如WAP)仍然可以正常使用。

下面的例子,為了突現tabIndex控制焦點跳轉的能力,特意把順序打亂了。請先選中第一個文本域,然后按tab鍵觀察。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

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

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


[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

tabindex為1的input元素IE6IE7IE8FF3.55opeta10.10Safari4.0chrome4.02
el.tabIndex1111111
el.getAttribute("tabindex")1111111
el.getAttribute("tabIndex")1111111

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

我們再來看當表單元素沒有顯示地設置tabIndex屬性時,tabIndex是否存在,存在的話其默認值是多少。

沒有tabIndex的input元素IE6IE7IE8FF3.55opeta10.10Safari4.0chrome4.02
el.tabIndex0000000
el.getAttribute("tabindex")000nullnullnullnull
el.getAttribute("tabIndex")000nullnullnullnull

如果測試對象為一個沒有顯式設置tabIndex屬性的div元素呢?在W3C標準中,只有表單元素與鏈接才能tabIndex屬性。

沒有tabIndex的div元素IE6IE7IE8FF3.55opeta10.10Safari4.0chrome4.02
el.tabIndex000-1-1-1-1
el.getAttribute("tabindex")000nullnullnullnull
el.getAttribute("tabIndex")000nullnullnullnull

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

不過在IE中,非表單元素與鏈接無論tabIndex是否定義都返回0,那么我們怎么知道元素是否已定義過呢?《Getting, setting,……》給出一個非常好的辦法。利用getAttributeNode 獲取對應的屬性節點。在IE中,如果是默認屬性或已定義屬性,將會返回一個對象,標準瀏覽器則只有當我們顯示地設置這屬性時才返回對象,其他一律為null。在IE中,如果是默認屬性,沒有為其賦值,它有一個特殊的specified ,顯示為false,如果賦值了,則為true。標準瀏覽器沒有這東西,也不需要此東西。

再看為沒有tabIndex屬性元素賦值的情況el.tabIndex=value就不用說了,肯定行得通,dom 0年代的實現。如果一個元素用setAttribute("tabIndex",3)賦值,注意是大寫,那么無論是el.tabIndex還是el.getAttribute("tabIndex")還是el.getAttribute("tabindex")都能得到3。如果是setAttribute("tabindex",3)賦值,IE則全為0,標準瀏覽器則全為3,因此還是用前者吧。

沒有tabIndex的input元素IE6IE7IE8FF3.55opeta10.10Safari4.0chrome4.02
el.tabIndex=33333333
el.setAttribute("tabIndex",3)3333333
el.setAttribute("tabindex",3)0003333

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

tabIndex為3的input元素IE6IE7IE8FF3.55opeta10.10Safari4.0chrome4.02
el.removeAttribute("tabIndex")0,0,00,0,00,0,00,null,null0,null,null3,null,null3,null,null
el.removeAttribute("tabindex")3,3,33,3,33,3,30,null,null0,null,null3,null,null3,null,null
delete el.tabIndexerrererrererrer3,3,30,null,null3,3,3undefined,null,null
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁山县| 泰兴市| 香港 | 望都县| 枣强县| 田阳县| 沁阳市| 阳高县| 会理县| 运城市| 康马县| 大厂| 大港区| 寻甸| 丹棱县| 治县。| 阳信县| 鹰潭市| 诸暨市| 都兰县| 中江县| 集安市| 英德市| 新龙县| 石楼县| 界首市| 安远县| 乐陵市| 梧州市| 察隅县| 嘉义市| 太谷县| 石城县| 房山区| 大埔区| 义乌市| 章丘市| 瑞昌市| 凌云县| 中西区| 页游|