Je suis gêné par le bloqueur de popup de Firefox qui fait mal - ou trop bien, ça revient au même - son boulot.
Je développe une interface d'administration avec gestion des droits de publication. C'est un site d'annnonces, lorsqu'une agence cliquent sur "Saisir une nouvelle annonce", je dois vérifier en temps réel que l'agence n'a pas déjà dépassé son forfait. Pour celà, j'utilise du javascript. Quand l'utilisateur clique sur le lien, une requête est envoyée au serveur via Xmlhttprequest. Et là deux solutions :
- L'agence n'a pas dépassé son forfait, la page de saisie est affichée sans problème (cle contrôle est suffisament rapide pour ne pas gêner la navigation).
- L'agence a déjà utilisé tout son forfait : La page de saisie n'est pas affichée (le clic sur le lien annulé), ET UN POPUP D'AVERTISSEMENT S'OUVRE. Qui dit "Votre quota d'annonces est déjà atteint, souhaitez-vous dépasser votre forfait (oui / non)".
Bref, c'est pas du tout de la pub intempestive et c'est bloqué par firefox. Et c'est gênant parce que c'est indispensable. Je sais bien que la barre de bloquage de popup s'ouvre, mais par habitude, énormément d'utilisateurs vont bloquer le popup et se retrouver bloquer par la suite.
Ma question est surtout technique. Je ne vois pas pourquoi :
Code : Tout sélectionner
<a href="page.htm" onclick="window.open(this.href); return false;">
Code : Tout sélectionner
<a href="page.htm" onclick="fonction_simple_ouverture_popup();return false;">
Code : Tout sélectionner
<a href="page.htm" onclick="ma_fonction_de_controle();return false;">
Code : Tout sélectionner
ma_fonction_de_controle()
{
xmlhttp_object = getHTTPObject();//Ma fonction générique pour les xmlhttprequest
xmlhttp_object.open('POST','controle_droits_publication.php',true); //ouverture asynchrone
xmlhttp_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp_object.onreadystatechange = function()
{
if(xmlhttp_object.readyState == 4)
{
if(xmlhttp_object.responseText != '')
{
if(xmlhttp_object.responseText == 'true')
{
window.location.href = obj.getAttribute('href');
}
if(xmlhttp_object.responseText == 'false')
{
window.open('fichier_popup.php','nom_popup','liste_parametres');
}
}
}
}
xmlhttp_object.send('id_agence=' + id_agence);
}
Si ça continue, je vais me retrouver obliger de simuler un popup javascrpt rien qu'à cause de Firefox, ça la fout mal...