Ir para conteúdo
Fórum Script Brasil
  • 0

Barra de progresso com prototype, firefox coloca espaços após cada req


heltonritter

Pergunta

Olá pessoal do fórum, o filho pródigo depois de meses sem visitas a casa volta para pedir ajuda :)

Como é difícil de explicar o problema fiz dois videozinhos, de 40 kb cada um. No IE, Opera... funciona, vejam como deve ficar

http://www.sourcedreams.com.br/diversos/ie.swf.html

No firefox após a cada request ele adiciona como que quebras de linha, e vai colocando o conteúdo para baixo em vez de para o lado apenas.

http://www.sourcedreams.com.br/diversos/ff.swf.html

Estive olhando o return do request e não tem quebra de linha, pelo que eu ví o retorno está ok, limpo.

Estou usando prototype, com o método PeriodicalUpdater, uma chamada por segundo.

Abaixo as partes importantes do código:

Scrit que faz a chamada ...

function startsinc() {

    var target = $('valores');
    document.getElementById('valores').style.display = 'table';
    if (!target) return false;
    new Ajax.PeriodicalUpdater(target, 'aniver_atualizar_bd_ajax_response.php?nro=<?php echo($cnt); ?>',{frequency:'1',decay:'40'});
}
esse target, o valores é uma tabela (antes eu fiz com div e deu o mesmo problema ...:
<table width="300px" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr bgcolor="#CCCCCC" height="18">
    <td id="valores"></td>
  </tr>
</table>
Agora o script que é chamado... ele retorna isso:
echo("<div id='va' style='background-color:#FFFF00; width:{$showThis2}px;height:18px' align='center'>".$showThis."%</div>");

Sendo que a variável $showThis é o indicador da percentagem e serve para movimentar a div, o response do script ajax é sempre esse, só que alterando a largura da div...

Alguém tem uma idéia de porque isso acontece, e principalmente, como eu posso contornar essa situação?

Editado por heltonritter
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Idéia melhor, mais performático e funciona agora!!

Em vez dele aguardar 1 segundo depois da última requisição como acontecia com o updater, assim que terminar a última já inicia a sequante, a barra rola mais real com o que está acontecendo.....

A idéia foi em vez de devolver HTML na petição, devolver JS que modificava algumas coisas na página de antes.

Agora funciona em qualquer browser com comportamento similar: http://www.sourcedreams.com.br/diversos/funciona.swf.html

O response da página ficou assim:

$('va').style.width = '300px';

$('va').innerHTML = '100%';

$('total').innerHTML = '0';
Na página que fez a petição, esse retorno é executado com eval:
function changeStatePeticion()
{
    if (http.readyState == 4 && http.status == 200)
    {
        contComplete++;

        eval(http.responseText);    

        if(contComplete <= 10)
            startsinc(); // faz a petição novamente

    } // fim da requisição está completa
} // fim do if da checagem dos estados

Bom, é isso, valeu a quem leu.

Editado por heltonritter
Link para o comentário
Compartilhar em outros sites

  • 0

HUm...interessante.

Seria interessante se aparecesse alguém que mexe com jquery nesse fórum.

Não frago nada disso, nunca poderei ajudar.

Boa solução.

Abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...