Je suis au courant des techniques javascript permettant de détecter si une fenêtre popup est bloquée dans d'autres navigateurs (comme décrit dans la réponse à cette question ). Voici le test de base :
var newWin = window.open(url);
if(!newWin || newWin.closed || typeof newWin.closed=='undefined')
{
//POPUP BLOCKED
}
Mais cela ne fonctionne pas dans Chrome. La section "POPUP BLOCKED" n'est jamais atteinte lorsque la popup est bloquée.
Bien sûr, le test fonctionne dans une certaine mesure puisque Chrome ne bloque pas réellement la popup, mais l'ouvre dans une minuscule fenêtre minimisée dans le coin inférieur droit qui répertorie les popups "bloquées".
Ce que j'aimerais, c'est pouvoir dire si la popup a été bloquée par le bloqueur de popup de Chrome. J'essaie d'éviter le reniflage du navigateur pour privilégier la détection des fonctionnalités. Existe-t-il un moyen de faire cela sans renifler le navigateur ?
Modifier : J'ai maintenant essayé d'utiliser newWin.outerHeight
, newWin.left
et d'autres propriétés similaires pour y parvenir. Google Chrome renvoie toutes les valeurs de position et de hauteur à 0 lorsque la fenêtre contextuelle est bloquée.
Malheureusement, il renvoie également les mêmes valeurs même si la popup est effectivement ouverte pendant une durée inconnue. Après une période magique (quelques secondes dans mes tests), les informations sur l'emplacement et la taille sont renvoyées avec les valeurs correctes. En d'autres termes, je n'ai toujours pas trouvé de solution à ce problème. Toute aide serait la bienvenue.
0 votes
Yoav, l'emplacement s'affiche de la même manière, que la fenêtre pop-up soit bloquée ou non. Quelqu'un d'autre a une réponse qui n'implique pas que l'utilisateur doive attendre 3,5 secondes ?
0 votes
Les dernières solutions d'InvisibleBacon et d'Andy ne fonctionnent pas dans Chrome 10 : le message "failed for chrome" apparaît même si la pop-up de test s'est affichée avec succès. Une idée ?
0 votes
Je pense qu'une nouvelle question s'impose, car certaines de ces solutions semblent n'avoir fonctionné qu'avec les premières versions de Chrome.
1 votes
@George Bailey Je suis d'accord, mais pour être clair, certains d'entre eux fonctionnent dans la version actuelle de Chrome (19). L'idée originale d'Andrew d'utiliser outerHeight (ou screenX, comme d'autres l'ont suggéré) fonctionne bien pour moi, combinée à l'approche setTimeout. Mais, oui, essayer de donner un sens à toutes ces réponses était vraiment déroutant jusqu'à ce que je fasse mes propres tests.
0 votes
Essayez ça : stackoverflow.com/a/31299484/1927014
0 votes
Ce site fait fonctionnent sur Chrome à partir du 26 janvier 2017.
1 votes
Cela répond-il à votre question ? Comment puis-je détecter si un navigateur bloque une popup ?