循环中的Javascript window.onload

时间:2016-01-23 11:59:44

标签: javascript for-loop delay intervals pageload

如何将myFunc从启动延迟到openPage完全加载?

因为它处于循环中,所以加载http://www.example.com/3/exam,然后执行myFunc。相反,我希望myFunc在每次迭代后执行,但只在每个页面加载后执行。

examplewebsite/1/exam

然后在页面完全加载时执行myFunc

examplewebsite/2/exam

然后在页面完全加载时执行myFunc

examplewebsite/3/exam

然后在页面完全加载时执行myFunc

以下是我的代码。

var ii;
for (ii = 0; ii <= 2; ii += 1) {

function openPage() {
    "use strict";
    window.location = 'http://www.example.com/' (ii + 1) + '/exam';
}

openPage();
window.onload = myFunc();
}

3 个答案:

答案 0 :(得分:0)

&#13;
&#13;
<html>
<head>
    <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script>
    $(function () {
		//Add your urls here
        var urls = ["http://www.howstuffworks.com", "http://example.com","http://www.rgukt.in"];
        var i = 0;
        function loadIframe(url)
        {
		    $('#iframe').load(function(){
			    //Call your function which you wanted to load after load end
				i=i+1;
				if(i<=2){
					loadIframe(urls[i]); 
				}
				
			});
            $('#iframe').attr('src', url);
        }

        loadIframe(urls[i]); 
    });
    </script>
</head>
<body>

    <iframe id="iframe" height="100%" width="100%"></iframe>

</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

正如@torazaburo在评论中指出的那样,当你改变window.location时,你的页面会刷新。这意味着您的所有变量也将如此。所以将循环。

如果你想在延迟后打开不同的页面循环,你可以尝试这样的事情:

Iterator因刷新而重置。但是你在URL中有这个值。获取并使用它。

代码

&#13;
&#13;
window.onload = function() {
  console.log("Window loaded");
  setTimeout(gotoNextPage, 3000);
}

function gotoNextPage() {
  // Location.pathname will return "/1/exam"
  var path = window.location.pathname;
  
  // for Demo purpose only
  path = "/1/exam";
  
  var pageID = path.split('/')[1];
  var url = 'http://www.example.com/' + (parseInt(pageID) + 1) + '/exam';
  document.getElementById("content").innerHTML = url;

  // window.location = url;
}
&#13;
<div id="content"></div>
&#13;
&#13;
&#13;

同样,当您执行此setInterval(muFunc(),1000)时,您会收到错误,因为myFunc()将执行函数。您应该尝试使用setInterval(myFunc, 1000)

同样针对您的方案,我建议您使用setTimeout代替setInterval。另请注意,从url获取的值将是字符串,而pageID + 1将连接而不是添加。您应该使用parseInt

答案 2 :(得分:0)

对于对答案感兴趣的人,我以不同的方式解决了这个问题。

这是通过在新窗口中打开url并将变量附加到url本身来完成的,然后我从打开的窗口调用它。然后关上了窗户。

即。 window.open(URL +&#39;?&#39; + myVar);

然后在浏览器窗口中通过window.location.href.split(&#39;?&#39;)[1]检索它;

并使用window.close();

关闭