var gg = false;
var check = false;
function send_request(url){
if(window.XMLHttpRequest){
gg = new XMLHttpRequest();
}
else if(window.ActiveXObject){
try{
gg = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
gg = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
if(!gg){
window.alert("不能创建");
}
gg.onreadystatechange=processRequest;
gg.open("POST",url,true);
gg.send(null);
}
function processRequest(){
if(gg.readyState == 4){
if(gg.status == 200){
document.getElementById("label1").value=gg.responseText;
}
}
} function update(){
var user = form1.user.value;
if(user==""){
form1.user.focus();
}
else{
var url = "jsp.jsp?user="+user;
url = encodeURI(url);
url = encodeURI(url);
send_request(url);
}
form1.user.value="";
form1.user.focus();
}
function chat(){
var user =1;
var url = "jsp.jsp?user=1";
send_request(url);
setInterval("chat()",2000);
}
window.onload=chat();
var check = false;
function send_request(url){
if(window.XMLHttpRequest){
gg = new XMLHttpRequest();
}
else if(window.ActiveXObject){
try{
gg = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
gg = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
if(!gg){
window.alert("不能创建");
}
gg.onreadystatechange=processRequest;
gg.open("POST",url,true);
gg.send(null);
}
function processRequest(){
if(gg.readyState == 4){
if(gg.status == 200){
document.getElementById("label1").value=gg.responseText;
}
}
} function update(){
var user = form1.user.value;
if(user==""){
form1.user.focus();
}
else{
var url = "jsp.jsp?user="+user;
url = encodeURI(url);
url = encodeURI(url);
send_request(url);
}
form1.user.value="";
form1.user.focus();
}
function chat(){
var user =1;
var url = "jsp.jsp?user=1";
send_request(url);
setInterval("chat()",2000);
}
window.onload=chat();
首先你了解setInterval和setTimeout的区别:
setInterval(表达式,时间):页面载入后,每经过指定毫秒值后执行指定表达式,是间隔多次执行的
setTimeout(表达式,时间):页面载入后,经过指定毫秒值后执行指定表达式,只执行一次
看了这个你知道你为什么会内存溢出了吧,最好是用setTimeout,用完后最好是还要关掉setInterval对应的是clearInterval,setTimeout对应的是clearTimeout
var user =1;
var url = "jsp.jsp?user=1";
send_request(url);
setInterval("chat()",2000);
}
window.onload=chat();
问题产生在这里
1: 页面加载后调用chat一次.
2: chat方法中设置了每隔2秒调用一次chat
3: 在每隔2秒调用的chat中又重复了2
所以, 会有内存溢出, 因为这里经过多次chat调用之后, 会形成n多独立的每隔2秒调用chat
也就是说
第一个2秒调用了1个chat
第二个2秒调用了2个chat
第三个2秒调用了4个chat
第四个2秒调用了8个chat
...
第一百个2秒调用了2^99个chat
所以, 很多就over了