Nếu bạn đang viết trang web của riêng mình, tôi sẽ sửa lỗi bằng jquery/javascript. Đây là những gì tôi đã sử dụng trên của tôi.
Hạn chế là bạn ngăn chặn hành vi khóa tab mặc định trên trang, đây có thể là vấn đề lớn hơn đối với khả năng truy cập trong một số trường hợp. Nhưng tôi nghi ngờ nó.
var Tab = {};
Tab.i = 1,
Tab.items = 0;
function fixTabulation() {
/* This can be used to auto-assign tab-indexes, or
# commented out if it manual tab-indexes have
# already been assigned.
*/
$('input, select, textarea').each(function(){
$(this).attr('tabindex', Tab.i);
Tab.i++;
Tab.items++;
});
Tab.i = 0;
/* We need to listen for any forward or backward Tab
# key event tell the page where to focus next.
*/
$(document).on({
'keydown' : function(e) {
if (navigator.appVersion.match("Safari")) {
if (e.keyCode == 9 && !e.shiftKey) { //Tab key pressed
e.preventDefault();
Tab.i != Tab.items ? Tab.i++ : Tab.i = 1;
$('input[tabindex="' + Tab.i + '"], select[tabindex="' + Tab.i + '"], textarea[tabindex="' + Tab.i + '"]').not('input[type="hidden"]').focus();
}
if (e.shiftKey && e.keyCode == 9) { //Tab key pressed
e.preventDefault();
Tab.i != 1 ? Tab.i-- : Tab.i = Tab.items;
$('input[tabindex="' + Tab.i + '"], select[tabindex="' + Tab.i + '"], textarea[tabindex="' + Tab.i + '"]').not('input[type="hidden"]').focus();
}
}
}
});
/* We need to update Tab.i if someone clicks into
# a different part of the form. This allows us
# to keep tabbing from the newly clicked input
*/
$('input[tabindex], select[tabindex], textarea[tabindex]').not('input[type="hidden"]').focus(function(e) {
Tab.i = $(this).attr('tabindex');
console.log(Tab.i);
});
}
$(document).ready(function() {
fixTabulation();
});
Đây không phải là giải pháp hoàn hảo, nhưng tốt hơn là yêu cầu tất cả người dùng thay đổi cài đặt Safari của họ trong System Prefs, lol.
Nguồn
2016-02-02 05:07:34
Nếu bạn loại bỏ các textarea thứ hai và chuyển đổi các tabindexes nút (do đó thứ tự trong nguồn là 1000, 1002, 1001), thực hiện Safari theo thứ tự tabindex? Có vẻ như Safari cho ưu tiên cao hơn đối với các đầu vào văn bản/văn bản, vì bất kỳ lý do gì ... –
Không, ngay cả khi không hoạt động. Có vẻ như tabindex trên href bị bỏ qua trong Safari. Tôi đang thử một cách giải quyết với các nút để xem điều đó có hiệu quả hay không. – Dhana