Я разрабатываю веб-приложение, которое требует много навигации с клавиатуры.
Я взял под контроль навигацию по клавишам и выбрал все элементы в следующем примере выбора 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)");