日期:2014-05-16  浏览次数:20306 次

用JS定期刷新网页元素的问题
我做了个嵌入式设备的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的方法我已经测试过是可以的,但比这个稍微复杂点。因为项目里有很多网页用这种方式刷新的网页,所以想找个简单点的方法,谢谢!

------解决方案--------------------
不要直接改js的src属性,而是删除要更新的<script>标签,重新建一个新的标签,本人测试过,都兼容可用

<html>
<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>