事情是这样的
1. 有一段很长的HTML代码在内存中(通过xmlhttp获取)。
2. 想要把这段代码放到某个div.innerHTML中。
3. 由于代码太长,赋值的时候造成浏览器卡住。div存在右边frameset中,左边frameset也因这个赋值动不了
4. 我想,用setInterval分几次赋值,不知是否可行?或者有没其他解决方案,目标是在不影响左边frameset操作的情况下把HTML代码呈现在右边的frameset中。

解决方案 »

  1.   

    分几次估计也有问题。
    你查询回来是一次性的。
    这个string相当大,分开估计也很占资源,不过可以尝试一下,你在后台要加个分段标记,到时好拆分。
      

  2.   

    DOM操作已经很费内存了,你还直接用innerHTML,这部卡死才怪。
    我建议还是用DOM操作好,可以逐渐的载入DOM片段,要想用innerHTML直接插入,性能肯定会打折扣的
      

  3.   

    赋值方法用 setTimeout 试试
      

  4.   

    楼上的有没比较过DOM操作所带来的时间损耗,首先innerHTML要多字符串解析,然后转换,最后转化为DOM插入,这些并不是错开时间就能摆平的
      

  5.   

    假定返回的HTML内容为一个三列10000行的table。直接innerHTML插入和dom插入差别有多大……
    如果dom插入也需要大量时间的话,那返回xml后配合setTimeout来做呢……会不会好些……
      

  6.   

    1、通过服务端的xmlhttp去取数据;
    2、取回的数据直接保存为xxx.html文件;
    3、DIV中加入IRAME;将保存的xxx.html文件赋值给IRAME的src
      

  7.   

    Ajax的优势是处理数据,而不是页面,LZ考虑下你这样是处理数据还是页面
      

  8.   

    这么大规模的改动用AJAX没什么意义了,跟直接刷新也没太大区别。要不就是
    1.iframe
    2.下载XML自己在客服端生成HTML,这样数据量能适当小一点,不会有太明显的区别就是了
      

  9.   

    是啊,这里ajax只是一个去数据集生成HTML的过程。 我想我要的是把获得的HTML呈现在页面上,假如分时呈现的话(比如每500毫秒插入一部分HTML),页面还会不会那样卡……
      

  10.   

    当然可以呀,我说的是服务端,直接用ADO.STREAM;FSO也可以呀
      

  11.   

    Bing.com上面的图片搜索就是展示了LZ的想法,LZ可以去看看,但是直接用innerHTML肯定不可能的
      

  12.   


    按照LZ说的settimeout肯定可以弱化卡的感觉 
      

  13.   

    控制一下通过xmlhttp获取的HTML量,多做几次AJAX操作,逐渐添加内容。
      

  14.   


    是啊,用DOM创建分时加载也只是弱化而已,
    每200毫秒加载一次,每一次加载50条,10000条得载入好长时间。
    又不让做分页……继续求解:
    frameset左右两个页面,当一边页面载入大量数据时如何才能尽可能不影响隔壁页面的操作……Help……
      

  15.   

    我们来计算下好了,你一个页面下载需要120s的时间,如果一次全部加载,加上解析,DOM等,算10s好了,也就130s了,但是这个时间内,用户什么也看不到,直到浏览器处理完毕。来看下分段下载,我分100段下载,每段1.2s,间隔时间0.5s,再加上解析,DOM处理算0.1s(上面才10s噢),合计1.8s,总计是180s,明显比130s多了50s,但是别忘了,这时候用户已经能够看到内容了,他的等待时间只有1.8s,而上面足足130s,哪个好自然就分辨出来了
      

  16.   

    这么大的 数据量,必须得刷新页面了,不适合使用AJAX