2014-12-08 4 views
0

При использовании window.location.href Я столкнулся с бесконечным циклом (даже если он помещен внутри функции, которая вызывается только один раз во время запуска).Window.location.href бесконечный цикл

function onYouTubeIframeAPIReady() { // only called one time once API's are ready 
     window.location.href = ("?name=" + new Date().getTime()); //is EPOCH time 

window.location.hash работает просто отлично (но я не могу использовать это) ...

+3

Таким образом, каждый раз, когда страница загружается, он перенаправляет к себе ... Как мог возможно, у него есть петля? –

+2

Вам нужно добавить if, чтобы увидеть, включает ли window.location.href имя = бит. Если они не включены, запустите window.location.href и перенаправьте страницу. – quid

ответ

2

Вы создаете свой собственный цикл.

При запуске страницы вы звоните:

window.location.href = ("?name=" + new Date().getTime()); 

Что заставляет страницу загрузки себя с новым ?name=time добавленным в конце.

Вместо этого вы можете изменить хэш-часть URL-адреса. Как так:

window.document.location.hash = new Date().getTime(); 

В противном случае вы должны условно назвать window.location.href так, что она выполняется только в определенное время, например, так:

function onYouTubeIframeAPIReady() { // only called one time once API's are ready 
    if (someVariable == "refreshNow") { 
      window.location.href = ("?name=" + new Date().getTime()); //is EPOCH time 
    } 
} 
+1

Я бы использовал хэш-часть URL-адреса, потому что он подходит для метки времени. Для вещей, которые не входят в хэш-часть, я бы рассмотрел функцию HTML5 history.push. – dotpush

1

Если эта функция выполняется во время запуска, и нет ничего условного, чтобы остановить его от запуска, то window.location.href часть будет выполнять каждый раз, вызывая цикл, который вы описываете. Вам нужно предоставить некоторое условие, которое остановит цикл.

Смежные вопросы