js定时刷新HTML主框架?

时间:2021-05-14 07:56:04
我想实现的是HTML混合框架集加载完毕后,待3秒后就刷新(重加载)一次主框架。
问题下面的代码里的注释:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            /* 
            当Main.htm运行后,为什么它会间隔3秒就刷新一次?
            其实,我的意图是:当Main.htm主框架集运行后,待3秒后就刷新一次,且就仅仅刷新一次。
            并且我也使用了setTimeout这个函数(它仅执行一次的),为什么会不管用?是不是框架问题?
            如何做到我的意图? 
            */
         setTimeout("window.location.href('Main.htm')", 3000); 
        });
        
    </script>
</head>
<!--下面是HTML混合框架集,上下左右经典布局-->
<frameset rows="20%,*">
<frame name="top" src="Top.htm" />
<frameset cols="20%,*">
  <frame name="Left" src="Left.htm"/>
  <frame name="Right" src="Right.htm"/>
</frameset>
</frameset>
<noframset>
<body>
</body>
</noframset>

</html>



感谢帮助! 

14 个解决方案

#1


setInterval是定时任务,setTimeout 是延时任务(只执行一次)

#2


window.onload=function(){
  setTimeout("location.reload()", 3000);
}

#3


同样还是出现重复加载的问题,我只要实现框架加载完毕3秒后就加载一次, 且就仅仅一次!

#4


明白原因了!之所以会不停地加载,是因为每次加载都会触发它,所以造成一个假象。
现在的问题就是有没有办法令Main.htm加载完之后再重加载一次,且仅仅就一次就够了?谢谢

#5


你这样写,整个页面都刷新了一次,页面自然会重新加载一次,然后又开始计数,再刷新再计数。。。你得做一个全局变量(比如COOKIE),记录是否执行过一次,如果执行过就放弃再执行

#6


引用 3 楼 hky227 的回复:
同样还是出现重复加载的问题,我只要实现框架加载完毕3秒后就加载一次, 且就仅仅一次!

用cookie记录,每次加载前先读取一下cookie再判断是否执行刷新事件

#7


var Cookie = {
  set: function(name,value){
        var Days = 30;
        var exp  = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
  },
  get: function(name){
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null){
            return (arr[2]);
        }else{
            return "";
        }
  },
  del: function(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval= this.get(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
  }
}
window.onload=function(){
if(!Cookie.get('Visited')){
Cookie.set('Visited',true);
setTimeout("location.reload()", 3000);
}
}

#8


引用 7 楼 a274295732 的回复:
var Cookie = {
  set: function(name,value){
        var Days = 30;
        var exp  = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
  },
  get: function(name){
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null){
            return (arr[2]);
        }else{
            return "";
        }
  },
  del: function(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval= this.get(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
  }
}
window.onload=function(){
if(!Cookie.get('Visited')){
Cookie.set('Visited',true);
setTimeout("location.reload()", 3000);
}
}


哥们,俺刚接触前端这块,不是很熟悉,能否详细点,俺刚放到Main.htm这里好像不行(同样会出现不停地刷新)。

#9


哥们,具体怎么用啊? 

#10


引用 8 楼 hky227 的回复:
Quote: 引用 7 楼 a274295732 的回复:

var Cookie = {
  set: function(name,value){
        var Days = 30;
        var exp  = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
  },
  get: function(name){
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null){
            return (arr[2]);
        }else{
            return "";
        }
  },
  del: function(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval= this.get(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
  }
}
window.onload=function(){
if(!Cookie.get('Visited')){
Cookie.set('Visited',true);
setTimeout("location.reload()", 3000);
}
}


哥们,俺刚接触前端这块,不是很熟悉,能否详细点,俺刚放到Main.htm这里好像不行(同样会出现不停地刷新)。


用IE测试,webkit内核的浏览器本地测试是不能写入cookie的

#11


js定时刷新HTML主框架? 哥们啊, 俺的目的就是为了在非IE内核才做这种无聊的工作啊。不然谁闲得蛋疼去搞这种无聊的刷新。

#12


这需求最好用XMLHTTPrequest来实现好些

#13


引用 11 楼 hky227 的回复:
js定时刷新HTML主框架? 哥们啊, 俺的目的就是为了在非IE内核才做这种无聊的工作啊。不然谁闲得蛋疼去搞这种无聊的刷新。

本地调试的时候是不能写入的,上传到服务器就可以了.. js定时刷新HTML主框架?

#14


问题我自己解决了,我使用了Session来记住它的刷新状态。感谢你的提醒。

#1


setInterval是定时任务,setTimeout 是延时任务(只执行一次)

#2


window.onload=function(){
  setTimeout("location.reload()", 3000);
}

#3


同样还是出现重复加载的问题,我只要实现框架加载完毕3秒后就加载一次, 且就仅仅一次!

#4


明白原因了!之所以会不停地加载,是因为每次加载都会触发它,所以造成一个假象。
现在的问题就是有没有办法令Main.htm加载完之后再重加载一次,且仅仅就一次就够了?谢谢

#5


你这样写,整个页面都刷新了一次,页面自然会重新加载一次,然后又开始计数,再刷新再计数。。。你得做一个全局变量(比如COOKIE),记录是否执行过一次,如果执行过就放弃再执行

#6


引用 3 楼 hky227 的回复:
同样还是出现重复加载的问题,我只要实现框架加载完毕3秒后就加载一次, 且就仅仅一次!

用cookie记录,每次加载前先读取一下cookie再判断是否执行刷新事件

#7


var Cookie = {
  set: function(name,value){
        var Days = 30;
        var exp  = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
  },
  get: function(name){
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null){
            return (arr[2]);
        }else{
            return "";
        }
  },
  del: function(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval= this.get(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
  }
}
window.onload=function(){
if(!Cookie.get('Visited')){
Cookie.set('Visited',true);
setTimeout("location.reload()", 3000);
}
}

#8


引用 7 楼 a274295732 的回复:
var Cookie = {
  set: function(name,value){
        var Days = 30;
        var exp  = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
  },
  get: function(name){
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null){
            return (arr[2]);
        }else{
            return "";
        }
  },
  del: function(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval= this.get(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
  }
}
window.onload=function(){
if(!Cookie.get('Visited')){
Cookie.set('Visited',true);
setTimeout("location.reload()", 3000);
}
}


哥们,俺刚接触前端这块,不是很熟悉,能否详细点,俺刚放到Main.htm这里好像不行(同样会出现不停地刷新)。

#9


哥们,具体怎么用啊? 

#10


引用 8 楼 hky227 的回复:
Quote: 引用 7 楼 a274295732 的回复:

var Cookie = {
  set: function(name,value){
        var Days = 30;
        var exp  = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
  },
  get: function(name){
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null){
            return (arr[2]);
        }else{
            return "";
        }
  },
  del: function(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval= this.get(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
  }
}
window.onload=function(){
if(!Cookie.get('Visited')){
Cookie.set('Visited',true);
setTimeout("location.reload()", 3000);
}
}


哥们,俺刚接触前端这块,不是很熟悉,能否详细点,俺刚放到Main.htm这里好像不行(同样会出现不停地刷新)。


用IE测试,webkit内核的浏览器本地测试是不能写入cookie的

#11


js定时刷新HTML主框架? 哥们啊, 俺的目的就是为了在非IE内核才做这种无聊的工作啊。不然谁闲得蛋疼去搞这种无聊的刷新。

#12


这需求最好用XMLHTTPrequest来实现好些

#13


引用 11 楼 hky227 的回复:
js定时刷新HTML主框架? 哥们啊, 俺的目的就是为了在非IE内核才做这种无聊的工作啊。不然谁闲得蛋疼去搞这种无聊的刷新。

本地调试的时候是不能写入的,上传到服务器就可以了.. js定时刷新HTML主框架?

#14


问题我自己解决了,我使用了Session来记住它的刷新状态。感谢你的提醒。