Я разрабатываю веб-приложение, которое требует много клавишной навигации.Почему 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)");
Существует, вероятно, не «почему» к тому, что в какой-то момент истории Microsoft не заботится о сети и все, что дерьмо работает в IE. Вероятно, вам нужно добавить некоторый маркер, например, класс CSS, чтобы различать реальные элементы tabindex и те, которые вы назначили себе как обходной путь, если вы хотите поддерживать IE7. –
Я так думаю. Однако мне удалось написать селектор, который также работает для IE7, поэтому добавление классов CSS (которое было нашим последним и утомительным курортом) не требуется. –