2012-01-10 99 views
3

我正在開發一個Web應用程序,它需要很多鍵盤導航。爲什麼IE7將tabindex =「0」添加到沒有tabindex的元素?

我已經採取了tab鍵導航控制,我選擇用下面的例子jQuery選擇器的所有元素:

elements = $("div").find("[tabindex]:visible").not("[tabindex='0'], :disabled"); 

所以我不選擇不可見元素,被禁用的元素或具有0的tabindex屬性。

這在Firefox,Chrome和IE8 +中很適用。不幸的是,該項目需要支持IE7。 出於某種原因,IE7似乎將tabindex =「0」添加到沒有由我們設置的tabindex的元素,elements包含IE7中tabindex =「0」的元素,儘管選擇器不應添加它們。

任何人都知道爲什麼IE7的行爲如此,如果有什麼可以做的呢?

這將導致我們的最壞的情況下表現不佳命中其中elements包含所有其他瀏覽器超過300元,除了IE7,其中包含了幾乎800

編輯:

我已經成功地在IE7中編寫一個不包含tabindex =「0」元素的選擇器。

elements = $("div").find("[tabindex][tabindex!=0][tabindex!=-1]:visible:not(:disabled)"); 
+0

沒有可能是「爲什麼」之外,歷史上的一個點微軟並未在意網頁和任何廢話在IE瀏覽器中運行。如果你想支持IE7,你可能需要添加一些標記,比如CSS class來區分真正的tabindex元素和你已經將自己指定爲解決方法的元素。 – 2012-01-10 09:50:27

+0

我想是的。不過,我設法編寫了一個也適用於IE7的選擇器,因此添加CSS類(這是我們最後和繁瑣的手段)是沒有必要的。 – 2012-01-10 10:59:44

回答