Si vous écrivez votre propre page web, je vous recommande d'ajouter un peu de jquery/javascript. C'est ce que j'ai utilisé sur la mienne.
L'inconvénient est que vous empêchez le comportement par défaut de la touche tabulation sur la page, ce qui peut poser un problème d'accessibilité dans certaines situations. Mais je doute que ce soit un gros problème.
var Tab = {};
Tab.i = 1,
Tab.items = 0;
function fixTabulation () {
/* Cela peut être utilisé pour attribuer automatiquement des index de tabulation, ou
# mis en commentaire si des index de tabulation manuels ont déjà été attribués.
*/
$('input, select, textarea').each(function(){
$(this).attr('tabindex', Tab.i);
Tab.i++;
Tab.items++;
});
Tab.i = 0;
/* Nous devons écouter tout événement de pression de la touche Tab vers l'avant ou l'arrière
# pour indiquer à la page où se concentrer ensuite.
*/
$(document).on({
'keydown' : function(e) {
if (navigator.appVersion.match("Safari")) {
if (e.keyCode == 9 && !e.shiftKey) { //Touche Tab pressée
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) { //Touche Tab pressée
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();
}
}
}
});
/* Nous devons mettre à jour Tab.i si quelqu'un clique dans
# une partie différente du formulaire. Cela nous permet
# de continuer le tabulation depuis l'entrée nouvellement cliquée.
*/
$('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();
});
Ce n'est pas une solution parfaite, mais c'est bien mieux que de dire à tous vos utilisateurs de modifier leurs paramètres Safari dans les Préférences Système, lol.