最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Window.location.href infinite loop - Stack Overflow

programmeradmin0浏览0评论

When using window.location.href I'm running into an infinite loop (even though it is placed inside a function that is only called once during startup).

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

window.location.hash works just fine (but I can't use that) ...

When using window.location.href I'm running into an infinite loop (even though it is placed inside a function that is only called once during startup).

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

window.location.hash works just fine (but I can't use that) ...

Share Improve this question edited Dec 8, 2014 at 20:25 BadFeelingAboutThis 14.4k2 gold badges34 silver badges40 bronze badges asked Dec 8, 2014 at 20:12 Ajax jQueryAjax jQuery 3452 gold badges5 silver badges19 bronze badges 2
  • 3 So every time the page loads, it redirects to itself... How could it possibly have a loop? – Travis J Commented Dec 8, 2014 at 20:15
  • 2 You need to add an if, to see if the window.location.href already includes the name= bit. If not included, run your window.location.href and have the page redirected. – quid Commented Dec 8, 2014 at 20:16
Add a ment  | 

2 Answers 2

Reset to default 5

You are creating your own loop.

On startup of the page you are calling:

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

Which causes the page to load itself with a new ?name=time appended on the end.

What you may want to do instead is change the hash part of the URL. Like so:

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

Otherwise you should conditionally call window.location.href so that it only executes at certain times, like so:

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

If this function is run during startup and there is nothing conditional to stop it from being run, the window.location.href portion will execute each time, causing the looping you describe. You need to provide some condition that will stop the loop.

发布评论

评论列表(0)

  1. 暂无评论