首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript -在无限循环中重新加载站点

Javascript -在无限循环中重新加载站点
EN

Stack Overflow用户
提问于 2015-03-13 19:52:05
回答 2查看 1.7K关注 0票数 0

我在无限循环中重新加载站点列表时遇到了问题。当我第一次尝试不使用iframe的时候,第一个站点被加载了,没有其他的事情发生。我想重新加载一些网站从列表到iframe。应该没有重新加载网站的按钮,它应该是自动->显示网站,等待20秒,显示site2,等待60秒…我希望有不同的延迟,所以这就是无限循环中的睡眠。在这一点上,我发现:)下面是我试图运行的(垃圾:)示例。有没有什么办法让它尽可能的简单和小巧?

代码语言:javascript
运行
复制
<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>

EN

回答 2

Stack Overflow用户

发布于 2015-03-13 20:16:02

好的,你可以这样做:

代码语言:javascript
运行
复制
 <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等。

票数 0
EN

Stack Overflow用户

发布于 2015-03-13 20:51:29

我会这样做:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29031542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档