2012-01-10 3 views
3

Я разрабатываю веб-приложение, которое требует много клавишной навигации.Почему IE7 добавляет tabindex = "0" к элементам без tabindex?

Я взял под контроль вкладок навигационной клавиши, и я выбрать все элементы со следующим примером выбора JQuery:

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

Так что я не выбрать невидимые элементы, элементы, которые являются инвалидами или имеют TabIndex от 0 .

Это отлично работает в Firefox, Chrome и IE8 +. К сожалению, проект требует поддержки IE7. По какой-то причине IE7, кажется, добавляет tabindex = "0" к элементам без установленного нами tabindex, а elements содержит элементы с tabindex = "0" в IE7, хотя селектор не должен их добавлять.

Кто-нибудь знает, почему IE7 ведет себя таким образом, и если есть что-то, что можно сделать по этому поводу?

Это приводит к плохой удар по производительности в нашем худшем случае, когда elements содержит более 300 элементов во всех других браузерах, кроме IE7, который содержит почти 800.

редактировать:

мне удалось напишите селектор, который не включает элементы с tabindex = "0" в IE7.

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

Существует, вероятно, не «почему» к тому, что в какой-то момент истории Microsoft не заботится о сети и все, что дерьмо работает в IE. Вероятно, вам нужно добавить некоторый маркер, например, класс CSS, чтобы различать реальные элементы tabindex и те, которые вы назначили себе как обходной путь, если вы хотите поддерживать IE7. –

+0

Я так думаю. Однако мне удалось написать селектор, который также работает для IE7, поэтому добавление классов CSS (которое было нашим последним и утомительным курортом) не требуется. –

ответ

1

HTML использует tabindex attribute для управления порядком вкладок. Таким образом, tabindex добавляется для всех элементов по умолчанию, чтобы сделать доступными страницы элементов страницы. Он также используется для focus pseudo class в других браузерах.

Ссылки

Смежные вопросы