C'est quoi
Une "ouverture sans action utilisateur" désigne toute fenêtre ou onglet s'ouvrant sans que l'utilisateur ait cliqué sur un élément déclencheur. Exemples courants :
- Un
window.open()déclenché au chargement de la page. - Une popup ouverte après un timer (
setTimeout(() => window.open(...), ...)). - Un
<meta http-equiv="refresh">qui ouvre ou redirige vers une nouvelle fenêtre. - Un modal ou une lightbox qui s'affiche automatiquement quelques secondes après l'arrivée sur la page.
Ces ouvertures automatiques désorganisent la navigation : le focus du clavier et du lecteur d'écran se retrouve dans une nouvelle fenêtre sans que l'utilisateur l'ait voulu.
Note : un lien avec
target="_blank"sur lequel l'utilisateur clique n'est pas une violation de ce critère (l'action est bien déclenchée par l'utilisateur). En revanche, l'utilisateur doit être informé à l'avance que le lien ouvre un nouvel onglet - c'est le critère RGAA 13.3.
Qui est touché
- Les personnes aveugles utilisant un lecteur d'écran : le focus se déplace brusquement dans une nouvelle fenêtre, sans avertissement. Le contexte de navigation est rompu et difficile à retrouver.
- Les personnes naviguant au clavier : elles perdent leur position dans la page d'origine et doivent trouver la nouvelle fenêtre dans la barre des tâches pour reprendre leur navigation.
- Les personnes avec des troubles cognitifs : une fenêtre inattendue crée une rupture de contexte perturbante et peut provoquer de la confusion.
Impact business
Une fenêtre qui s'ouvre automatiquement interrompt la navigation en cours. Pour un utilisateur de lecteur d'écran, la nouvelle fenêtre capte le focus sans avertissement. Il doit comprendre ce qui vient de se passer, fermer la fenêtre et retrouver son point de lecture dans la page d'origine.
Cette interruption non sollicitée peut être bloquante dans les formulaires multistep, les sessions authentifiées ou tout parcours nécessitant une continuité de navigation.
Comment le détecter
- Audit Mynto : le scan détecte les appels à
window.open()dans les événements de chargement de page et les fonctions temporisées (setTimeout,setInterval) qui déclenchent une ouverture de fenêtre sans action utilisateur. - Manuel : charge la page et observe si une fenêtre ou un onglet supplémentaire s'ouvre seul dans les premières secondes. Vérifie aussi la présence de scripts avec
window.open()appelé en dehors d'un gestionnaire de clic ou de soumission de formulaire. - Inspecte les popups et modals : s'ouvrent-ils sans que l'utilisateur ait cliqué sur quelque chose ?
Comment corriger
// Popup qui s'ouvre automatiquement au chargement - violation RGAA 13.2
window.addEventListener('load', () => {
window.open('https://example.com/promo', '_blank', 'width=400,height=300');
});
// Ou avec un délai
setTimeout(() => {
window.open('https://example.com/newsletter', '_blank');
}, 3000);// Popup uniquement sur action explicite de l'utilisateur
document.getElementById('btn-promo').addEventListener('click', () => {
window.open('https://example.com/promo', '_blank', 'width=400,height=300');
});Supprime tout déclencheur automatique de fenêtre (window.open() au
chargement, setTimeout avec ouverture de fenêtre, meta refresh
vers une nouvelle fenêtre).
Si une popup est nécessaire (inscription newsletter, offre promotionnelle), déclenche-la sur une action explicite : clic sur un bouton visible, soumission d'un formulaire.
Sur WordPress, les plugins de popup (Popup Maker, Elementor Popup, Hello Bar) ont des options de déclenchement dans leurs paramètres. Change le déclencheur de "À l'arrivée sur la page" ou "Après X secondes" vers "Au clic sur un bouton" ou "À la fermeture explicite d'un autre élément".
Questions fréquentes
Un lien avec target blank viole-t-il RGAA 13.2 ?
Non, si l'utilisateur clique sur le lien. L'action (le clic) est déclenchée par l'utilisateur. En revanche, il faut informer l'utilisateur à l'avance que le lien ouvre un nouvel onglet - c'est le critère RGAA 13.3 (complémentaire de 13.2).
Un modal qui s'ouvre au chargement viole-t-il ce critère ?
Oui, si le modal s'ouvre automatiquement sans action de l'utilisateur. C'est un changement de contexte non sollicité. Déclenche-le sur un événement utilisateur, ou accepte le compromis d'une bannière fixe (non-modale) qui ne capte pas le focus.
La balise meta refresh est-elle toujours interdite ?
<meta http-equiv="refresh"> avec un délai nul (content="0;url=...") est une redirection, généralement acceptable. Avec un délai non nul, elle provoque un changement de contexte automatique qui peut violer plusieurs critères RGAA. Évite-la pour les redirections à délai.
À lire aussi
Cette erreur est-elle sur ton site ?
Lance un audit Mynto gratuit. Tu sauras en quelques minutes si ton site est concerné, sur quelles pages, et avec quel impact.