2015-02-01 2 views
1

Я делаю сайт, где я открываю новое окно каждые 30 секунд. Я получил его, чтобы открыть новые окна правильно, но я бы хотел, чтобы он закрыл последнее окно, открытое перед открытием нового, так что только одно окно открыто одновременно. Как мне это сделать? Вот мой код:Открытые ссылки, один за другим

<script type="text/javascript"> 
function open_win() { 
    window.open("http://www.wol.com"); 
    setTimeout(window.open('http://www.bol.com'),35000); 
    setTimeout(window.open('http://lol.com'),70000); 
    setTimeout(window.open('http://col.com'),105000); 

} 
</script> 
+1

Вы понимаете, что последующие окна могут блокироваться блокировщиком всплывающих окон? – jfriend00

+0

да, но я просто разрешил всплывающие окна ...; (im a noob – Madda

+0

Это нормально, если вы единственный клиент этого кода, но если вы ожидаете, что другие пользователи будут использовать эту веб-страницу, то их браузеры, вероятно, не позволят новые окна за пределами первого, и вы не можете ожидать, что они разрешат всплывающие окна. – jfriend00

ответ

1

Вы можете закрыть окно, открытое вызовом window.close на возвращаемое значение window.open. Итак:

<script type="text/javascript"> 
function open_win() { 
    var wol,bol,lol; 
    wol=window.open("http://www.wol.com"); 
    setTimeout(function(){window.close(wol);bol=window.open('http://www.bol.com')},35000); 
    setTimeout(function(){window.close(bol);lol=window.open('http://lol.com')},70000); 
    setTimeout(function(){window.close(lol);window.open('http://col.com')},105000); 

} 
</script> 
+0

Не знаю почему, но мои вкладки не закрываются :( – Madda

0

Вы можете использовать массив строк, чтобы хранить все ссылки, а затем перебрать этот цикл вызывающего открываются и закрываются через 30 секунд. Использование цикла и абстрагирования open/close позволяет вам иметь столько ссылок, сколько захотите.

var linkArray = ['http://www.wol.com', 'http://www.bol.com', 'http://lol.com', ['http://col.com'] 

function openWin(link) { 
    var currentWindow = window.open(link); 
    setTimeout(currentWindow.close(), 30000); 
} 

function runLinks() { 
    for(var i = 0; i< linkArray.length; i++) { 
      openWin(linkArray[i]); 
    } 
} 
+0

Спасибо, вот что я был найден. – Madda

+0

Вы должны вызвать 'window.close()', используя дескриптор окна, который вы хотите закрыть. Вы не можете просто передать ему ссылку, как вы делаете, и ожидать, что она будет работать должным образом. проиллюстрируйте правильный способ закрыть окно, которое вы открыли. – jfriend00

+0

ummm что-то не работает, я не могу его выполнить, он говорит, что есть проблема с первой функцией. Может быть, window.close причиняет все удовольствие чтобы дать мне ошибку? Вместо ссылки мне нужно написать что-то еще? – Madda

0

Здесь небольшой цикл интервалов для вызова URL-адресов. Не стесняйтесь добавлять массив для разных URL.

<script type="text/javascript"> 
    var lastWindow = ""; 
    setInterval(function(){ 
     if(lastWindow != ""){ lastWindow.close(); } 
     lastWindow = window.open("url"); 
    }, 30000); 
</script> 
Смежные вопросы