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

解决方案 »

  1.   

    就用ajax吧,封装一个类,调用很方便的。
      

  2.   

    因为你的执行条件是:
    <body onload="">
    最简单易懂是方法,在网页上做一个时钟,可以隐匿起来。当用户打开网页,便开始计数,当二值相等时,请执行刷新函数。
      

  3.   


    这个没有问题啊,我倒是觉得你请求一个新的js去刷新的时候又促发了onload事件,所以建议在绑定setInterval之前先默认clearInterval()。
      

  4.   

    有可能是浏览器缓存引起的,给src参数加个随机数试试:
    function refresh_data(){
       document.getElementById("dyndata").src = "dyndata.js?" + Math.random();
    }
      

  5.   

    不要直接改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>
      

  6.   


    这个方法我试了确实有效,不过有个地方要做点点改动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++;
    }