[HTML/JS]Comment faire marcher le popup blocker sous FF?

Comment faire marcher le popup blocker sous FF? [HTML/JS] - HTML/CSS - Programmation

Marsh Posté le 20-10-2006 à 16:36:29    

Salut,
 
J'essaie de développer un bout de code Javascript qui permette, lorsque je cherche à ouvrir une fenêtre de type popup, et dans le cas où l'utilisateur dispose d'un filtre à popup, à ouvrir l'adresse dans la fenêtre principale à la place.
 
Cependant, j'ai un problème:
 
Je n'arive pas à activer le filtre à popup sous Firefox pour mes tests.
 
J'ai beau aller dans Tools=>Options et cocher "Block Popup Windows" et m'assurer que la liste "Allowed Sietes" est vide, mes popups ne sont jamais bloquées... Donc, je ne peux pas faire mes tests.
 
Par exemple, un tel code:


<html>
<body>
<a target="_blank" href="http://www.google.fr">Click Here</a>
</body>
</html>


 
ne déclenche pas le bloqueur de popup sous Firefox, alors qu'il le déclenche sous IE et Opera...
 
Comment ça se fait?

Reply

Marsh Posté le 20-10-2006 à 16:36:29   

Reply

Marsh Posté le 20-10-2006 à 16:41:45    

:heink: c'est pas un pop up ça, c'est une nouvelle fenêtre qui s'ouvre quand on clique  
 
les pop up ça s'ouvre via window.open() et généralement celles qui sont bloquées sont celles qui s'ouvrent toutes seuls (la pub quoi)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 20-10-2006 à 16:51:13    

Cool, déjà, tu me sauves, j'arrives mieux à comprendre pourquoi Firefox ne les bloque pas... Par contre, si je fais ouvrir ma fenêtre au démarrage d'une première page, alors, là, effectivement, elle est bloquée par FF, je viens de tester...
 
Merci pour la précision, ça me rendait quelque peu fou, je ne comprenais pas...
 
Donc, pour en revenir à mon truc, il apparaît alors que Opera ou même IE bloquent ce genre de fenêtre ouverte sur click de l'utilisateur.
 
Donc, mon but est de créer un morceau de code JS qui permette, si la fenêtre additionnelle est bloquée, d'ouvrir l'URL dans la fenêtre principale.
 
Je pense que je vais trouver un truc qui marche sur Opera et IE. Mais comment être certain que ça marche sur tous les popup blockers du marché? (je ne peux quand même pas tous les tester...)

Reply

Marsh Posté le 20-10-2006 à 17:08:32    

tu tente d'ouvrir la popup.
tu met dans la popup un code qui renvoie à la page principale "ok j'existe" (en js c'est simple à faire ca)
dans la principale, si t'as pas recut le message "ok j'existe" au bout d'un certain temps ( genre 1sec ) tu ouvre ta popup dans la page en cours.
 
Si jamais il a une connection qui rame _vraiment_ tu risque d'avoir la page ouverte des 2 cotés, mais ca me semble le moyen le plus pratique au 1er coup d'oeil.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 20-10-2006 à 17:20:54    

0x90 a écrit :

tu tente d'ouvrir la popup.
tu met dans la popup un code qui renvoie à la page principale "ok j'existe" (en js c'est simple à faire ca)
dans la principale, si t'as pas recut le message "ok j'existe" au bout d'un certain temps ( genre 1sec ) tu ouvre ta popup dans la page en cours.
 
Si jamais il a une connection qui rame _vraiment_ tu risque d'avoir la page ouverte des 2 cotés, mais ca me semble le moyen le plus pratique au 1er coup d'oeil.


 
Quand tu parles de demander à la fenêtre ouverte d'envoyer un message à la fenêtre principale, tu penses à par exemple recupérer , de la part de la popup, son window.opener, et de lui initialiser une variable, par ex, popupok, à 1? Et ensuite, à ma fenêtre principale, de tester la valeur de ccette variable 1 sec après l'ouverture?
 
Cette idée est pas mal, mais elle m'imposerait de modifier le code de toutes les pages cible qui peuvent être ouveres en popup... Trop de maintenance. D'autre part, cete méthode n'est utilisable que si j'ouvre des pages à moi en popup... Mais comment faire si je veux ouvrir google en popup?
 
Sinon, je suis en train d'expérimenter quelque peu, et il apparaît qu'avec IE et Firefox, lorsqu'une popup est bloquée, le window.open retourne un objet null. Donc, je peux déja faire un test sur cet objet retourné.
 
Le problème, c'est qu'avec Opera, un objet est retourné, popup bloquée ou pas... Donc, il faut queje trouve ensuite un test supplémentaire pour Opera...

Reply

Marsh Posté le 20-10-2006 à 19:12:59    

Bon, ça y est, j'ai trouvé une solution qui marche bien pour les trois browsers (IE, Firefox et Opéra).
En fait, comme je le dis plus haut, le pb avec Opera pour détecter si la popup a été ouverte, c'est que la méthode window.open retourne toujours un object window...Blocage ou pas blocage. Donc, je dois faire un traitement spécial avec Opera, je teste le Status qui vaut tantot null (fenêtre non ouverte), tantôt '' (fenêtre ouverte)
 
Ca marche à l'oeil.
 
Voici le code, pour ceux que ça intéresse...:
 

function openMain(url){
 var wndpopup = window.open(url,'_popup',  
'left=100,top=0,width=830,height=600,toolbar=0,resizable=1,scrollbars=1');
 if(wndpopup && navigator.appName.substring(0, 5).toLowerCase()=='opera'){  
  if(wndpopup.status == null){ //Dealing with Opera and popup blocked;
   window.location = url;
  }else{ //Dealing with Opera but popup not blocked;
   wndpopup.location = url;
   wndpopup.focus();
  }
 }else{ //other browsers
  if(wndpopup){
   wndpopup.focus();
  }else{
   window.location = url;
  }
 }
}


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed