我做了个嵌入式设备的web管理界面,其中一个网页要定期去刷新网页的元素,但为了效果,不刷新网页整体,只刷新网页的b部分元素。
网页代码如下<script language="javascript" id="dyndata"></script>
<script language="JavaScript">
function Start(){
setInterval('refresh_data()', 3000);
}
function refresh_data(){
document.getElementById("dyndata").src="dyndata.js";
}
</script>
</head>
<body onLoad="StartGet()">
........基本原理是通过修改dyndata这个js文件的src来实现数据的刷新,dyndata.js里有动态的数据和刷新页面元素的函数。
这个代码在IE上运行很正常,但是在Firefox,就无法实现自动刷新。
网页第一次加载的时候,页面元素的内容也是用这种方式加载的,firefox还是可以显示的,但后面就不再刷新了。
从浏览器送出的数据看来,浏览器也没有定期去请求dyndata.js这个文件。请问有没有什么改动小的方法可以达到我的目的,在firefox上也能使用。
ajax的方法我已经测试过是可以的,但比这个稍微复杂点。因为项目里有很多网页用这种方式刷新的网页,所以想找个简单点的方法,谢谢!
网页代码如下<script language="javascript" id="dyndata"></script>
<script language="JavaScript">
function Start(){
setInterval('refresh_data()', 3000);
}
function refresh_data(){
document.getElementById("dyndata").src="dyndata.js";
}
</script>
</head>
<body onLoad="StartGet()">
........基本原理是通过修改dyndata这个js文件的src来实现数据的刷新,dyndata.js里有动态的数据和刷新页面元素的函数。
这个代码在IE上运行很正常,但是在Firefox,就无法实现自动刷新。
网页第一次加载的时候,页面元素的内容也是用这种方式加载的,firefox还是可以显示的,但后面就不再刷新了。
从浏览器送出的数据看来,浏览器也没有定期去请求dyndata.js这个文件。请问有没有什么改动小的方法可以达到我的目的,在firefox上也能使用。
ajax的方法我已经测试过是可以的,但比这个稍微复杂点。因为项目里有很多网页用这种方式刷新的网页,所以想找个简单点的方法,谢谢!
<body onload="">
最简单易懂是方法,在网页上做一个时钟,可以隐匿起来。当用户打开网页,便开始计数,当二值相等时,请执行刷新函数。
这个没有问题啊,我倒是觉得你请求一个新的js去刷新的时候又促发了onload事件,所以建议在绑定setInterval之前先默认clearInterval()。
function refresh_data(){
document.getElementById("dyndata").src = "dyndata.js?" + Math.random();
}
<head>
<script type="text/javascript">var num = 1;
function reflash(){window.setInterval('a()' ,3000);}
function a(){
var jsdom = document.getElementById("js");
document.body.removeChild(jsdom);
var js = document.createElement("script");
js.type = "text/javascript";
js.src = num + ".js";
js.id = "js";
document.getElementsByTagName("body")[0].appendChild(js);
num++;
}
</script>
</head>
<body >
<input type="button" value="click" onclick = "reflash()" />
<p>12345</p>
<script type="text/javascript" id="js"></script>
</body>
</html>
这个方法我试了确实有效,不过有个地方要做点点改动function a(){
var jsdom = document.getElementById("js");
//document.body.removeChild(jsdom);这句改为下面的写法
if(jsdom != null) document.getElementsByTagName("body")[0].removeChild(jsdom);
var js = document.createElement("script");
js.type = "text/javascript";
js.src = num + ".js";
js.id = "js";
document.getElementsByTagName("body")[0].appendChild(js);
num++;
}