免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: hqnpc
打印 上一主题 下一主题

请教一个ajax使浏览器崩溃的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-04-04 14:03 |只看该作者
经过测试,当把maketable这个函数注释掉,浏览器就不会崩溃了。

函数代码如下:
注:<%$nowtime%> 这样的变量,都用于smarty

function makeTable(m_ds,xmlDoc) {


deleteOldTable(); //先清除以前的结果

var table = document.createElement("table");
table.setAttribute("border","0");
table.setAttribute("width","100%");
table.style.cssText = "padding:2px; border:1px solid #799AE1;font-size:14px"

document.body.appendChild(table);
var header = table.createTHead();
var headerrow = header.insertRow(0);
var statinfo = document.createElement('div');
var nowtime = "<%$nowtime%>";
var nowregion = "<%$nowregion%>";
var nowtype = "<%$nowtype%>";
var nowcount = "<%$nowcount%>";
var allinfo_nums = "<%$allinfo_nums%>";
var today_nums = "<%$today_nums%>";
statinfo.style.backgroundColor = 'F1F3F5';
statinfo.innerHTML = "截止 "+nowtime+" ,共有<"+nowregion+">地区{"+nowtype+"信息}"+nowcount+"条 全国今日即时信息:"+today_nums+"条 全国累计信息:"+allinfo_nums+"条";
headerrow.insertCell(0).appendChild(statinfo);

for(var i=0;i<m_ds.length;i++) {
var aid = m_ds.getElementsByTagName("id")[0].firstChild.data;
var atype = m_ds.getElementsByTagName("type")[0].firstChild.data;
var content = m_ds.getElementsByTagName("content")[0].firstChild.data;
var sortname = m_ds.getElementsByTagName("sortname")[0].firstChild.data;
var tel = m_ds.getElementsByTagName("tel")[0].firstChild.data;
//var tel2 = m_ds.getElementsByTagName("tel2")[0].firstChild.data;
var mobile = m_ds.getElementsByTagName("mobile")[0].firstChild.data;
var dateline = m_ds.getElementsByTagName("dateline")[0].firstChild.data;
<%if $userinfo.soft_contactinfo ==1%>
var contactinfo = "<font color=\"#993399\">TEL:"+tel+" "+mobile+"</font>";
<%else%>
var contactinfo = "";
<%/if%>
var row = table.insertRow(i+1);
row.style.backgroundColor = 'F1F3F5';
var eachone = document.createElement('div');
eachone.innerHTML = "<a href=\"#\" onClick=\"javascript:window.open('index.php?action=display&type="+atype+"&id="+aid+"','targetwin','width=620,height=300,scrollbars=yes,toolbar=0,location=0,directories=0,status=0,menuBar=0,resizable=1');\" ><font color=#FF8400>["+sortname+"]</font>"+content+"</a> "+contactinfo+"  " +dateline+"";
eachone.style.cssText="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px";
row.insertCell(0).appendChild(eachone);
}
}

function deleteOldTable() {
    delRow = document.getElementsByTagName("table").length;
    if(delRow == 1) return;
    var node = document.getElementsByTagName("table")[delRow-1]; //表格
    var c = node.childNodes.length
    for(i=0;i<c;i++){
    node.removeChild(node.childNodes[0]); //删除全部单元行
        }
}

[ 本帖最后由 hqnpc 于 2007-4-4 14:09 编辑 ]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
12 [报告]
发表于 2007-04-04 14:12 |只看该作者
那么可能是因为频繁的建立和去除DOM元素,导致崩溃。

建议这么做:
1. 我想你的数据每次都是固定的显示格式的。
2. 采用更新数据点的形式,而不是讲数据显示框架删除重建。

论坛徽章:
0
13 [报告]
发表于 2007-04-04 14:23 |只看该作者
可是还有还有一个问题,a用户与b用户得到的数据是不同的。

论坛徽章:
0
14 [报告]
发表于 2007-04-05 11:27 |只看该作者
问题果然出在频繁操作dom,换了更新数据点。问题解决了。
谢谢乔版主。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP