Je connais les techniques javascript pour détecter si un popup est bloqué 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 le popup est bloqué.
Bien sûr, le test fonctionne dans une certaine mesure puisque Chrome ne bloque pas réellement le popup, mais l'ouvre dans une petite fenêtre minimisée dans le coin inférieur droit qui répertorie les popups "bloqués".
Ce que je voudrais faire, c'est pouvoir dire si le popup a été bloqué par le bloqueur de popup de Chrome. J'essaie d'éviter le reniflement du navigateur en faveur de la détection des fonctionnalités. Existe-t-il un moyen de le faire sans renifler le navigateur?
Modifier : J'ai maintenant essayé de faire usage de newWin.outerHeight
, newWin.left
et d' autres propriétés similaires à 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 fenêtre contextuelle est effectivement ouverte pendant une durée inconnue. Après une période magique (quelques secondes dans mes tests), les informations d'emplacement et de taille sont renvoyées sous forme de valeurs correctes. En d'autres termes, je ne suis toujours pas plus près de comprendre cela. Toute aide serait appréciée.