Почему IE7 добавляет tabindex = "0" к элементам без tabindex? - PullRequest
3 голосов
/ 10 января 2012

Я разрабатываю веб-приложение, которое требует много навигации с клавиатуры.

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

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

Поэтому я не выбираю невидимые элементы, элементы, которые отключены или имеют индекс табуляции 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)");

1 Ответ

1 голос
/ 18 января 2012

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

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...