En tant que bonne pratique, je pense que c'est une bonne idée de tester si une fenêtre contextuelle a été bloquée et de prendre des mesures au cas où. Vous devez savoir que window.open a une valeur de retour et que cette valeur peut être nulle si l'action échoue. Par exemple, dans le code suivant:
function pop(url,w,h) {
n=window.open(url,'_blank','toolbar=0,location=0,directories=0,status=1,menubar=0,titlebar=0,scrollbars=1,resizable=1,width='+w+',height='+h);
if(n==null) {
return true;
}
return false;
}
si le popup est bloqué, window.open renverra null. La fonction retournera donc false.
A titre d'exemple, imaginez appeler cette fonction directement depuis n'importe quel lien avec target="_blank"
: si le popup est ouvert avec succès, le retour
false
bloquera l'action du lien, sinon si le popup est bloqué, le retour true
laissera le comportement par défaut (ouvrir une nouvelle fenêtre _blank) et continuer .
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
De cette façon, vous aurez une fenêtre contextuelle si cela fonctionne, et une fenêtre _blank sinon.
Si la fenêtre contextuelle ne s'ouvre pas, vous pouvez:
- ouvrez une fenêtre vide comme dans l'exemple et continuez
- ouvrir une fausse popup (une iframe à l'intérieur de la page)
- informer l'utilisateur ("veuillez autoriser les popups pour ce site")
- ouvrez une fenêtre vide puis informez l'utilisateur etc.