如何将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();
}
答案 0 :(得分:0)
<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;
答案 1 :(得分:0)
正如@torazaburo在评论中指出的那样,当你改变window.location
时,你的页面会刷新。这意味着您的所有变量也将如此。所以将循环。
如果你想在延迟后打开不同的页面循环,你可以尝试这样的事情:
Iterator因刷新而重置。但是你在URL中有这个值。获取并使用它。
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;
同样,当您执行此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();
关闭