高手帮忙!我写的这个ajax表单提交模块是否存在内存泄漏问题?如能找到此bug百分相赠! 大概看了一下,没有什么死循环,但你用try用的太多了,建议不要用为好,所以错误都应该是事先考虑到的,而不是让程序去跳过错误,你这样写代码出现的意外会太多。http://3http.com是我用js写的论坛,没用什么try,一样正常运行的,不管多大的程序,没用try都能正常运行的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我在你的代码中看到了以下的代码,省了不少引号,但不知道是否是JS充许的标准写法,能否讲一下原理。 var dialogBox = '\ <table width="100%" height="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="' + dialogconf['bordercolor'] + '">\ <tr>\ <td height="20" bgcolor="' + dialogconf['titlebgcolor'] + '" id="dialogTitle" onMouseOver="this.style.cursor=\'move\'" onMouseDown="dialogDrag(\'' + oDivID + '\',event)"> </td>\ </tr>\ <tr>\ <td bgcolor="' + dialogconf['bodybgcolor'] + '"><table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">\ <tr>\ <td height="100"><span id="dialogMsg"> </span></td>\ </tr>\ <tr>\ <td height="30" align="center" id="dialogBtn"> </td>\ </tr>\ </table></td>\ </tr>\ </table>'; 感觉是把回车转换成了\n,因为\t表示tab,但\e或\其它字符等,js里是没有意义的,不过\回车虽然没有意见,但却在经过js处理后,变成了js字符中的回车而不再是代码中的回车了。但所怕的是其它浏览器或以后万一IE升级时,这个不支持了就麻烦了,得知道微软已经考虑了这个了才行。 目前ie和firefox都是支持的说跑题了,现在主要是是否有内存泄漏的问题,继续等待中... 用资源管理器观察了了一下,平均每提交一次用去6、7M内存,-_-~!====CSDN====无厘头冲动回帖 粗略看了一下,问题可能出在提示对话框上,每次提交都会调用dialog()来初始化对话框,每次都会重建一个层,建议做个判断只构建一次-----------------------------//发送请求function sendRequest(){ dialogBgShade(); dialog();//对话框初始化function dialog(code, msg, title){ 我每次显示对话框前先判断一下对话框是否存在,存在的话先remove掉,这样不行吗?if ($(oDivID)) { $(oDivID).parentNode.removeChild($(oDivID)) }; 在关闭对话框的时候也会remove对话框和背景层function dialogClose(){ var arrDialogElemId = new Array('dialogBg','dialog'); for (key in arrDialogElemId) { if ($(arrDialogElemId[key])) { $(arrDialogElemId[key]).parentNode.removeChild($(arrDialogElemId[key])) }; }} 看了一下,查出一个问题,出现在你的timerid=setInterval...你可以这样测试dialog函数这一段改成:function dialogBg(){ //if ($(dialogBgId)) { $(dialogBgId).parentNode.removeChild($(dialogBgId)) }; if (!$(dialogBgId)) { var oDiv = document.createElement('div'); oDiv.id = dialogBgId; document.body.appendChild(oDiv); } else { oDiv = $(dialogBgId); } alert(document.body.outerHTML); 一个带有偶然性的问题。中午,我用Windows 2000 Server + IE 6.0 (打上所有补丁)访问,没有出现内存泄漏的问题。我都提交了几十次,内存基本稳定。晚上,我用Windows XP+IE 6.0 (打上了SP1补丁)访问,依然稳定,没有出现内存泄漏。 不明白“BlueDestiny(Last, Present, Future) ”的意思。你究竟说的是什么问题?我用调试工具单步执行,没有看到异常。 请问一下楼主,你测试的操作系统是什么?是否打过补丁?如果打过,升级到什么版本?用的浏览器是什么类型?补丁情况?因为我对“http://wanghui.name/demo/dialogdemo.htm”测试,一直观察不到你说的情况。用Microsoft InterDev 6.0对脚步单步调试,也没发现什么异常。 不好意思,最近一直没上csdn,帖子没有及时回复 BlueDestiny(Last, Present, Future)说的确实是个bug,是因为提交以后,焦点还是在提交按钮上,按空格键会再次提交,应该在提交以后把提交按钮disabled掉就好了这个程序我后来又改了一下,现在的问题是只有在背景第一次变暗时会才消耗掉比较大的内存,以后再次变暗就不会消耗内存了。我的操作系统是xp,IE6,打过sp2的补丁,别的补丁没打过,只有在IE浏览器中才出现这个问题,在firefox中不会出现这个问题 如何获取一个元素的某个样式 高手求助。关于ie6图片透明的 树绑定问题 数组拼接对象报错 GoogleMap与Mapabc 之间的关系与差别. 在页面弹出一个div,里面添加了一个Object播放视频,隐藏div如何删除object web开发,技术选择疑问? 为什么用javascript打开的excel对象无法释放? 烦死人了:数字与中文转换的问题! 大家帮帮忙,需要源代码:还记得csdn原来的样子嘛,我需要左边那个菜单显示和隐藏的代码 请帮我看看这段代码哪里出错? 有什么办法可以让弹出窗口永远在最上面。。。。
var dialogBox = '\
<table width="100%" height="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="' + dialogconf['bordercolor'] + '">\
<tr>\
<td height="20" bgcolor="' + dialogconf['titlebgcolor'] + '" id="dialogTitle" onMouseOver="this.style.cursor=\'move\'" onMouseDown="dialogDrag(\'' + oDivID + '\',event)"> </td>\
</tr>\
<tr>\
<td bgcolor="' + dialogconf['bodybgcolor'] + '"><table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">\
<tr>\
<td height="100"><span id="dialogMsg"> </span></td>\
</tr>\
<tr>\
<td height="30" align="center" id="dialogBtn"> </td>\
</tr>\
</table></td>\
</tr>\
</table>';
====CSDN====
无厘头冲动回帖
-----------------------------//发送请求
function sendRequest()
{
dialogBgShade();
dialog();
//对话框初始化
function dialog(code, msg, title)
{
function dialogClose()
{
var arrDialogElemId = new Array('dialogBg','dialog');
for (key in arrDialogElemId)
{
if ($(arrDialogElemId[key])) { $(arrDialogElemId[key]).parentNode.removeChild($(arrDialogElemId[key])) };
}
}
{
//if ($(dialogBgId)) { $(dialogBgId).parentNode.removeChild($(dialogBgId)) };
if (!$(dialogBgId)) {
var oDiv = document.createElement('div');
oDiv.id = dialogBgId;
document.body.appendChild(oDiv);
} else {
oDiv = $(dialogBgId);
}
alert(document.body.outerHTML);
BlueDestiny(Last, Present, Future)说的确实是个bug,是因为提交以后,焦点还是在提交按钮上,按空格键会再次提交,应该在提交以后把提交按钮disabled掉就好了这个程序我后来又改了一下,现在的问题是只有在背景第一次变暗时会才消耗掉比较大的内存,以后再次变暗就不会消耗内存了。我的操作系统是xp,IE6,打过sp2的补丁,别的补丁没打过,只有在IE浏览器中才出现这个问题,在firefox中不会出现这个问题