Question

Existe-t-il un moyen efficace de déterminer si un bloqueur de popup est activé pour une personne? Je dois gérer une application Web qui contient malheureusement des tonnes de fenêtres pop-up et vérifier si l'utilisateur a activé le blocage des fenêtres pop-up.

Le seul moyen que j'ai trouvé de faire cela est d'ouvrir une fenêtre à partir de javascript, de vérifier si elle est ouverte pour déterminer si un bloqueur est activé, puis de la fermer immédiatement.

Ceci est légèrement gênant car les utilisateurs qui ne l’ont pas activé voient un petit éclair à l’écran lorsque la fenêtre s’ouvre et se ferme immédiatement.

Existe-t-il d'autres méthodes non gênantes pour y parvenir?

Était-ce utile?

La solution

Lire Détecter un bloqueur de popup en utilisant Javascript :

En gros, vous vérifiez si la méthode 'window.open' renvoie un descripteur à une nouvelle fenêtre.

Ressemble à ceci:

var mine = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');
if(mine)
    var popUpsBlocked = false
else
    var popUpsBlocked = true
mine.close()

Autres conseils

Comme d’autres l’ont déjà dit, vous devrez l’essayer et voir, mais en vérifiant que l’objet de fenêtre résultant n’est pas "falsy". n'est pas suffisant pour tous les navigateurs.

Opera renvoie toujours un objet Window lorsqu'une fenêtre contextuelle est bloquée. Vous devez donc examiner l'objet de manière suffisante pour déterminer s'il s'agit d'une fenêtre réelle:

var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");

Comme d'autres l'ont déjà fait remarquer, le seul moyen de le savoir est d'essayer.

Cependant, une bonne réponse approximative à la question "est un bloqueur de popup installé" est, de nos jours, "oui". Tous les navigateurs récents bloquent vos fenêtres contextuelles par défaut, il est donc préférable de concevoir votre application pour y faire face avec élégance. En particulier, n'essayez pas de window.open sauf en réaction à une interaction de l'utilisateur (généralement onclick), et tout ira bien pour vous.

Je ne pense pas qu'il soit possible de détecter cela sans essayer d'ouvrir une fenêtre, car les bloqueurs de popups n'ajoutent rien qui puisse être interrogé dans JS.

Les fenêtres contextuelles ouvertes en réponse à une action d'un utilisateur, telle qu'un clic sur un lien, ne doivent pas être bloquées par des bloqueurs de fenêtres contextuelles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top