Если вы назначаете каждому новому окну имя, когда вы делаете его всплывающим, а затем с помощью php (или чего-либо еще) сохраняете имя окна в файле cookie или сеансе, вы можете затем закрыть все всплывающие окна, созданные вашим сайт при совершении определенного действия:
это то, что я делаю (в php / js):
function closePopups(){
var popups = Array();
<?
$i = 0;
if(isset($_SESSION['popups'])){
foreach($_SESSION['popups'] as $key=>$pop){
echo "popups[$i] = '$pop';\n";
$i++;
}
unset($_SESSION['popups']);
}
?>
for( i = 0; i < popups.length; i++ ){
window.open('',popups[i],'width=1,height=1').close();
}
}
В цикле for вы должны сначала открыть всплывающее окно, а затем закрыть его, чтобы ваше текущее окно могло видеть, было ли уже открыто всплывающее окно с таким именем, и если оно было, то оно закроет его. Если это не так, он создаст новое окно с тем же именем и немедленно закроет его.
Вот так я решил проблему