我在无限循环中重新加载站点列表时遇到了问题。当我第一次尝试不使用iframe的时候,第一个站点被加载了,没有其他的事情发生。我想重新加载一些网站从列表到iframe。应该没有重新加载网站的按钮,它应该是自动->显示网站,等待20秒,显示site2,等待60秒…我希望有不同的延迟,所以这就是无限循环中的睡眠。在这一点上,我发现:)下面是我试图运行的(垃圾:)示例。有没有什么办法让它尽可能的简单和小巧?
<html>
<head>
<script language="JavaScript" type = "text/javascript">
function sleep(delay) {
var start = new Date().getTime();
while (new Date().getTime() < start + delay);
}
function changeSites() {
while(true){
document.getElementById('myFrame').setAttribute('src', "http://www.google.com/");
sleep(4000);
document.getElementById('myFrame').setAttribute('src', "http://www.yahoo.com/");
sleep(2000);
document.getElementById('myFrame').setAttribute('src', "http://stackoverflow.com/");
sleep(5000);
}
}
</script>
</head>
<body>
<iframe id="myFrame" width=100% height=100% >
<p>Your browser does not support iframes.</p>
</iframe>
<script language="JavaScript" type = "text/javascript">
changeSites();
</script>
</body>
</html>
发布于 2015-03-13 20:16:02
好的,你可以这样做:
<script type="text/javascript">
var urls = ["http://www.google.com/", "http://www.yahoo.com/", "https://stackoverflow.com/"];
var index = 0;
setInterval(function() {
document.getElementById('myFrame').setAttribute('src', urls[index]);
index = index+1;
if(index > urls.length-1) {
index = 0;
}
}, 20000);
</script>
除了谷歌和其他公司不会允许这样做。参见How to show google.com in an iframe?。你可能应该在iframe中控制嵌入的站点,或者对你想嵌入的站点使用CORS等。
发布于 2015-03-13 20:51:29
我会这样做:
var sites = [
{ 'src' : 'http://www.google.com', 'delay' : 4000 },
{ 'src' : 'http://www.github.com', 'delay' : 6000 }
];
var index = 0, time, lastUpdate = new Date().getTime();
function showNextSite () {
document.getElementById('myFrame').setAttribute('src', sites[index].src);
lastUpdate = new Date().getTime();
index++;
if(index >= sites.length)
index = 0;
}
setInterval(function () {
time = new Date().getTime();
if (time >= lastUpdate + sites[index].delay)
showNextSite();
}, 1000); // lets only check this every second
https://stackoverflow.com/questions/29031542
复制相似问题