2014-05-06 3 views
1

J'essaie de fermer toutes les fenêtres pop-up ouvertes en utilisant javascript. J'ai essayé le code suivant mais cela n'a pas fonctionné.JavaScript: Les fenêtres popup se referment immédiatement

Ceci est mon code pour ouvrir la fenêtre pop-up ..

var childWindow = new Array(); 
function PopupCenter(pageURL, title, w, h) 
{  
    var left = (screen.width/2) - (w/2); 
    var top = (screen.height/2) - (h/2); 
    var targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left); 
    childWindow[childWindow.length] = targetWin; 

    if (window.focus) { 
     targetWin.focus() 
    } 

    return false;  
} 

Et voici mon code pour fermer toutes les ouvrir une fenêtre pop-up ..

function CloseChildWindow() 
{ 
    if (childWindow.length != 0) 
    { 
     for (var i = 0; i < childWindow.length; i++) 
     { 
      childWindow[i].close(); 
     } 
    } 
} 

J'appelle la fonction 'CloseChildWindow()' dans l'événement body onunload de la page. Mais quand j'essaie d'ouvrir la fenêtre pop-up, elle se ferme immédiatement pour que la fenêtre pop-up ne s'ouvre pas complètement.

Quel est le problème avec mon code?

Merci d'avance.

+0

Joli morceau de code là-bas. Pouvez-vous fournir un jsfiddle avec quelques pop-ups aléatoires. – SSS

+2

Bloqueur de fenêtres publicitaires? – OrangeDog

Répondre

0

Les fenêtres contextuelles doivent être déclenchées par un clic de l'utilisateur. Je suppose que ce n'est pas un problème pour vous, car vous voir un popup, si ce n'est que pour une seconde. Cela signifie que le navigateur ne le bloque pas.

Cependant, si vous faites cela sur un clic d'un lien, l'événement onunloadsera feu ... même si la page elle-même est pas déchargé! J'ai eu cela comme un problème majeur en travaillant sur un projet particulièrement ambitieux.

Ce que vous devrez peut-être faire est d'ajouter un indicateur "ne pas décharger", qui est défini lorsqu'un pop-up est ouvert et effacé après un setTimeout. Ensuite, votre événement onunload peut simplement vérifier ce drapeau et ne rien faire s'il est défini.

Questions connexes