I
Script TElement duplicado no html a cada abertura de registro.
Bom dia,
Acredito que tenha encontrado um problema ao incluir script dentro de um php, vou tentar explicar.
Tenho um form de lista, onde possui registros dentro de uma grade, quando clico no botão de editar este registro, ele vai para minha tela mestre detalhe, esta tela mestre detalhe possui um script(está abaixo) de atualização de tela a cada 20 segundo automaticamente, contudo, se eu retorno para minha grade e clico em outro registro, esta tela mestre detalhe fica executando o script do registro anterior e do novo registro.
Será que estou fazendo certo? pois aparentemente a cada registro que eu clico na edição o html recebe um novo registro do script e fica executando.
Este é o script
$url = http_build_query($_REQUEST);
$script = new TElement('script');
$script->type = 'text/javascript';
$script->add("$(document).ready(function(){
window.setTimeout(function(){
var results = new RegExp('[?&]class=([^&#]*)').exec(window.location.href);
alert('$url');
if('".__CLASS__."' == results[1] )
{
__adianti_load_page('engine.php?{$url}');
}
}, 20000);
});
");
Acredito que tenha encontrado um problema ao incluir script dentro de um php, vou tentar explicar.
Tenho um form de lista, onde possui registros dentro de uma grade, quando clico no botão de editar este registro, ele vai para minha tela mestre detalhe, esta tela mestre detalhe possui um script(está abaixo) de atualização de tela a cada 20 segundo automaticamente, contudo, se eu retorno para minha grade e clico em outro registro, esta tela mestre detalhe fica executando o script do registro anterior e do novo registro.
Será que estou fazendo certo? pois aparentemente a cada registro que eu clico na edição o html recebe um novo registro do script e fica executando.
Este é o script
$url = http_build_query($_REQUEST);
$script = new TElement('script');
$script->type = 'text/javascript';
$script->add("$(document).ready(function(){
window.setTimeout(function(){
var results = new RegExp('[?&]class=([^&#]*)').exec(window.location.href);
alert('$url');
if('".__CLASS__."' == results[1] )
{
__adianti_load_page('engine.php?{$url}');
}
}, 20000);
});
");
A função setTimeout continua executando, mesmo que você troque de página. Vejo 2 possíveis soluções:
1 - Cancelar a execução da setTimeout através da função clearTimeout().
2 - Modificar o "if('".__CLASS__."' == results[1] ) ", para além de verificar se o nome da classe é o mesmo da página atual, verificar também o ID.
Obrigado Nataniel,
Consegui resolver, sua dica de clearTimeout() foi fundamental.