Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Damon

SetInterval travando o Browser

Recommended Posts

Esta função uso para atualiza a pagina, mais ela trava o browser

<script type="text/javascript">

var tempo = window.setInterval(carrega, 5000);
function carrega()
{

$('#conteudo').load("chat_conversa.php");
tempo = setTimeout ( carrega ,  5000 );
}

</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se resolve:

 

<script>
setTimeout(function(){
function carrega(){
('#conteudo').load("chat_conversa.php");
setTimeout(carrega, 5000);
}
carrega();
}, 5000);
</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você colocou no head precisa de uma chamada DOM

 

 

$(function(){
setTimeout(function(){ function carrega(){ ('#conteudo').load("chat_conversa.php"); setTimeout(carrega, 5000); } carrega(); }, 5000);
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso eu coloquei dentro head, como que seria essa chamada DOM?

 

Eu testei esse novo script que você me passou mais porem me parece que com setTimeout , ele não consegue carregar

a pagina.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faltou só a chamada do jQuery, eu errei, perdão:

 

<script type="text/javascript">
$(function(){
setTimeout(function(){
function carrega(){
$('#conteudo').load("chat_conversa.php");
setTimeout(carrega, 5000);
}
carrega();
}, 5000);
});
</script>

Errado: ('#conteudo')

 

Corrigido: $('#conteudo')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ted k'

 

Tranquilo irmão, então agora ele atualiza mais continua travando o browser.

Eu vou posta o meu script inteiro da pagina pra você da uma analisada, talvez consiga ver algum erro aonde eu

não estou vendo.

 

Desde já agradeço pela ajuda.

 

 

<html>

<head>


<meta http-equiv="Content-Language" content="pt-br">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>suporte</title>
<script type="text/javascript" src="js/jquery.js"></script>


<script type="text/javascript">
$(function(){
setTimeout(function(){
function carrega(){
$('#conteudo').load("chat_conversa.php");
setTimeout(carrega, 5000);
}
carrega();
}, 5000);
});

function rolar(){
scrollTo(0,100000);
}
</script>
</head>
<body onload="javascript:rolar();" onload="java script: self.print();">

<div id= "conteudo">
<?php

	require("classes.php");
	require("conecta.php");
	
	$sql = "select * from mensagem 
	WHERE id_atendimento = (SELECT MAX(id_atendimento) FROM ATENDIMENTO_CHAT)";
	$res=mssql_query($sql,$db_conexao);
	
	while ($row = mssql_fetch_array($res))
	{
		$quemenviou = $row["quemenviou"];
		$mensagem = $row["mensagem"];
		$nomeenviou = $row["nomeenviou"];
			
		if ($quemenviou=="CLIENTE")
		{
			echo "<p><font color='#000000'>$nomeenviou escreveu:</font><br> 
					      <font color='#666666'>$mensagem</font></p>";
		
		
		}
		if ($quemenviou=="ATENDENTE")
		{
		
			echo "<p><font color='#006600'>$nomeenviou escreveu:</font><br>
					       <font color='#666666'>$mensagem</font></p>";
		}
		
	
	}
?>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz testes aqui e não travou com o setTimeout, mas troquei caso alguma coisa que não consegui enxergar esteja lhe trollando:

 

<script type="text/javascript">
$(function(){
var carrega = function(){
var intervalo = setInterval(function(){
$('#conteudo').load("chat_conversa.php", function(){
clearInterval(intervalo);
carrega();
});
}, 5000);
};
carrega();
});
</script>

 

Verifica seu console pra ver se tem algum retorno errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então verifiquei mais não apareceu nenhum erro não. A logica esta certinha.

 

Da uma olhada nessa minha div "conteudo" talvez você consiga ver algo de errado nela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Esta função uso para atualiza a pagina, mais ela trava o browser

<script type="text/javascript">

var tempo = window.setInterval(carrega, 5000);
function carrega()
{

$('#conteudo').load("chat_conversa.php");
tempo = setTimeout ( carrega ,  5000 );
}

</script>

Ela trava o browser instaneamente ou demora um pouquinho?

Compartilhar este post


Link para o post
Compartilhar em outros sites
var tempo = window.setInterval(carrega, 5000); // chame o "carrega" a cada 5 segundos

function carrega() {
    $('#conteudo').load("chat_conversa.php");
    tempo = setTimeout(carrega, 5000); // chama de novo em 5 segundos
}

 

O carrega se chama de novo em 5 segundos... mas o setInterval lá de cima chama a cada 5 segundos também.

 

Momento 0:

setInterval criado

 

Momento 5s:

setInterval dispara e carrega() é chamado. setTimeout( A ) criado

 

Momento 10s:

setInterval dispara e carrega() é chamado. setTimeout( B ) criado

setTimeout(A) dispara e carrega() é chamado. setTimeout( C ) criado.

 

Momento 15s:

setInterval dispara e carrega() é chamado. setTimeout(D) criado.

setTimeout( B ) dispara e carrega() é chamado. setTimeout(E) criado.

setTimeout( C ) dispara e carrega() é chamado. setTimeout(F) criado.

 

Momento 20s:

setInterval dispara e carrega() é chamado. setTimeout(G) criado.

setTimeout(D) dispara e carrega() é chamado. setTimeout(H) criado.

setTimeout(E) dispara e carrega() é chamado. setTimeout(I) criado.

setTimeout(F) dispara e carrega() é chamado. setTimeout(J) criado.

 

etc etc etc

 

As chamadas estão se acumulando.

 

Solução 1: Troque esse setInterval do começo por setTimeout. Assim ele só será chamado uma vez (e a carrega() continua se encarregando de se chamar novamente) (eu prefiro essa).

 

Solução 2: Retire o setTimeout do final da carrega(). Isso não é necessário já que a setInterval do começo vai chamar a função em 5 em 5 segundos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu troquei o setInterval por setTimeaot , mais ainda continua travando e também testei retirei o setTimeout do final, mais ainda continua travando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao invés de dar load na chat_conversa.php, crie uma teste.php com quase nada dentro e teste o load nela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu fiz o teste separado, montei este script mais o setInterval não funcionou

<html>
<head>
<meta charset="utf-8">
<title>Teste</title>
<script type="text/javascript" scr=<"js/jquery.js"></script>
<script type="text/javascript">
var tempo = window.setInterval(carrega, 5000); // chame o "carrega" a cada 5 segundos

function carrega() {
    $('#conteudo').load("chat_conversa.php");
    tempo = setTimeout(carrega, 5000); // chama de novo em 5 segundos

}

</script>

</head>
<body>
<div id= 'conteudo'>

<?php
$host= "servername";
$user="chat";
$password = "*****";
$banco = "*******";


$db_conexao = mssql_connect("$host","$user","$password");
mssql_select_db($banco);

$sql = "select * from teste ";
$res=mssql_query($sql,$db_conexao);

while ($row = mssql_fetch_array($res))
$nome = $row["nome"];
			


echo $nome;
?>

</div>

</body>
</html>

Testei o mesmo script com o <meta http-equiv="refresh" content="5;URL=teste.php">

que funcionou perfeitamente

 

eu ia inserindo no banco e ele atualizava automaticamente os nomes .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perae perae

 

Esse código que você passou (script e php/html) é o da chat_conversa.php?

 

A página chama ela mesma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na hora de colar aqui eu esqueci de mudar.

 

Mas eu testei como teste.php mesmo assim não funcionou

 


<html>
<head>
<meta charset="utf-8">
<title>Teste</title>
<script type="text/javascript" scr=<"js/jquery.js"></script>
<script type="text/javascript">
var tempo = window.setInterval(carrega, 5000); // chame o "carrega" a cada 5 segundos

function carrega() {
    $('#conteudo').load("teste.php");
    tempo = setTimeout(carrega, 5000); // chama de novo em 5 segundos

}

</script>

</head>
<body>
<div id= 'conteudo'>

<?php
$host= "servername";
$user="chat";
$password = "123456";
$banco = "Atendimento";


$db_conexao = mssql_connect("$host","$user","$password");
mssql_select_db($banco);

$sql = "select * from teste ";
$res=mssql_query($sql,$db_conexao);

while ($row = mssql_fetch_array($res))
$nome = $row["nome"];
			


echo $nome;
?>

</div>
<div id="interval"></div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A minha dúvida continua.

 

Esse código que você passou (script e php/html) é o da teste.php? A página chama (pelo load) ela mesma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.