setTimeout有的时候可以用,但这里不太合适吧,很吃内存

解决方案 »

  1.   

    你的数据量太大了。
    1、把数据分割,每次只加载部分数据,处理过的就清空.
    2、或者执行部分数据后(1000条),然后地址栏传参(传递当前的count),打开新的ie关闭原来的ie,在页面里获取参数count,然后在新的ie里由count的下标再开始执行代码.
    你是要实现什么?在一个ifm里不停的打开网站?
      

  2.   

    只有一个setTimeout,没什么问题吧?之前很多setTimeout一起用,IE也没有卡死
      

  3.   

    在一个ifm里不停的打开网站?是的,就是这个效果,间隔15秒,但是没有那么多数据,一般1000以下,0-1000之间吧。
      

  4.   

    在一个ifm里面不停的打开网页,15秒,你自己算算页就是说你的系统不停的刷新一样 !
      

  5.   

    <div id=mytest></div>
    <script type="text/javascript"> 
    var urldata =  

    {"url":"http://www.xxx.com/"} 
    ,{"url":"http://www.xxx.com/"} 
    ,{"url":"http://www.xxx.com/"} 
    ,{"url":"http://www.xxx.com/"} 
    ,{"url":"http://www.xxx.com/"} 
    …………………… 

    var count = 0; 
    var timeID = null; 
    function Output() { 
    clearTimeout(timeID); 
    $("mytest").innerHTML = "<iframe src='"+urldata[count].url+"'></iframe>"

    //这样试试看行不行,并且看看有没有其他原因引起ie缓慢。
    //$("ifm").src = urldata[count].url; 
    count++; 
    timeID = setTimeout("Output();",15000); 
    if (count == 10000) { 
    alert("ok"); 


    Output(); 
    </script> 
      

  6.   

    if (count == 10000) { 
    clearTimeout(timeID); 
    alert("ok"); 
    } 由于你是10000次以后才释放内存,也就是说在你达到10000次以前,你之前的所有动作一直都在执行,都在占用内存,占用满了自然会导致卡死现象
      

  7.   

    if (count == 10000) {  
    clearTimeout(timeID);  
    alert("ok");  
    }  由于你是10000次以后才释放内存,也就是说在你达到10000次以前,你之前的所有动作一直都在执行,都在占用内存,占用满了自然会导致卡死现象
    if (count == 10000)这个是个数,10000是随意写的,如果数据是500,那么是这样的,if (count == 500)。
      

  8.   

    if (count == 10000) {  
    clearTimeout(timeID);  
    alert("ok");  
    }意思就是运行到最后一个,清除seTtimeout计时器,再alert提示一下。
      

  9.   

    $("mytest").innerHTML = "<iframe src='"+urldata[count].url+"'></iframe>"
    innerHTML这个插入iframe,能直接访问吗?好像要刷新。
      

  10.   

    试过了,innerHTML的iframe,打不开
      

  11.   

    能详细说一下吗?就目前的代码,仅一个seTtimeout计时器,如何做到运行一次,清除一次?
      

  12.   

    如果仅有url元素,建议用数组吧 ,没必要使用 json 序列
      

  13.   

    恩,是的,仅有url这个元素,哪种耗资源低、执行速度快就用哪种就行的。数组应该怎么写?麻烦给个例子,JS不太熟练。
      

  14.   

    数组就直接var UrlArr = []; 这样的啊
      

  15.   

    innerHTML的iframe得用document.createElement("iframe")创建然后用appendChild加上去才可以。
      

  16.   

    var count = 0; 
    var timeID = null; 
    function Output() {
    if(timeID!= null){ 
    clearTimeout(timeID); 
    }
    $("mytest").innerHTML = "<iframe src='"+urldata[count].url+"'></iframe>"

    //这样试试看行不行,并且看看有没有其他原因引起ie缓慢。
    //$("ifm").src = urldata[count].url; 
    count++; 
    timeID = setTimeout("Output();",15000); 
    if (count == 10000) { 
    alert("ok"); 


    Output();
      

  17.   

    if(timeID!= null){ 
    clearTimeout(timeID); 
    }
      

  18.   

    var urldata = ["www.xxx.com","www.xxx.com","www.xxx.com","www.xxx.com"];
    var count = 0; 
    var timeID = null; 
    function Output() {  for(var i=count ; i<urldata.length ; i++)
    {
    $("ifm").src = urldata[i].toString(); 
    }
    count++; 
    timeID = setTimeout("Output();",15000); 

    也不好测试。。
      

  19.   

    <iframe id="ifm" src="about:blank"></iframe>
    <script type="text/javascript">
    /*<![CDATA[*/var urldata = new Array();
    for (var i=0; i<100; i++)
    {
    urldata.push(new Array(100).join("http://www.qq.com/#").split("#"));
    }var count = 0;
    var timeID = null;function Output()
    {
    document.getElementById("ifm").src = "about:blank";
    document.getElementById("ifm").src = urldata[Math.floor(count/100)][count%100]; count++;
    timeID = window.setTimeout(Output, 15000); if (count == 100*100)
    {
    window.clearTimeout(timeID);
    alert("ok");
    }
    }Output();/*]]>*/
    </script>