Links

Saturday, November 25, 2006

sustentação da tecla Back.

Daniel Kantor executou uma solução da tecla Back em Streampad e compartilhou d com nós.

Um dos gripes principais de encontro às aplicações da correia fotorreceptora de AJAX é como quebram

tecla back em um browser típico. Houve algumas soluções (notàvelmente história realmente simples de Neuberg do Brad) mas nenhuns começaram-no que trabalha em Safari. GMail ainda não tem uma tecla da parte traseira do funcionamento em Safari.
Dizem são a terceira vez o encanto e eu tentei começar duas vezes uma coisa da tecla Back em Streampad antes. Eu não quis usar alguma outra pessoa biblioteca porque são geralmente mais complexos do que eu necessito e eu não quis pôr algo no lugar até que eu tive o funcionamento Safari . Eu tentei algumas técnicas diferentes, mas quando eu o comecei que trabalha em Safari, quebraria em Firefox ou em IE.
Eu figurei finalmente para fora uma maneira começar este funcionamento em Firefox, em IE e em Safari. Eu não o testei em Opera. É aqui o que eu. Como usual, sua milhagem variará muito provável.
  1. criar um iFrame com o width=’1′, height=’1′, name=’hFrame’, id=’hFrame’ e o frameBorder=’0′. É importante mantê-lo visível na página ou não trabalhará em Safari. Desde que é 1×1 justo, tentar escondê-lo em um canto ou em algo.
  2. Criar esta função -
    function historyManager(f,t){
    frames[’hFrame’].location.href=”http://www.streampad.com/historyManFrame.php?f=” +f+”&t=”+t;
    }
    (obviamente substituto em seu domínio para example.com)
  3. Criar esta função -
    function historyFunc(f){
    f = f+”()”;
    eval(f);
    }
  4. Cría o que língua) uma página do php (ou que aceite dois vars GET - “f” e “t”
  5. Nomear esta página “historyManFrame”.
  6. Em “historyManFrame” posto isto -
    $f = $_GET[’f'];
    $t = $_GET[’t'];
  7. No Tag da cabeça posto dentro de um Tag do certificado -
    function hello(){
    document.title = “Streampad - < ? echo $t; ?>“;
    parent.historyFunc(”< ? echo $f; ?>“);
    }
  8. E no Tag Body posto -
    onload=hello()

Agora o que está indo acontecer é este:

  1. Chamar a função historyManager e passar-lhe dois vars String. f é a função que você gostaria finalmente de chamar. t é o título que você gostaria de mandar mostrar acima na história da tecla Back.
  2. historyManager está indo carregar a página (historyManFrame) no iframe e passar-lhe f e t como as variáveis GET.
  3. historyManFrame está indo agora carregar e fazer duas coisas. Primeiramente, ajustará seu próprio título a t variável. Então chamará sua função historyFunc do pai e passá-la-á em f.
  4. a vontade historyFunc faz exame então da função f (como uma corda) e eval ele (que chamará a função final).

Este é exatamente o que eu estou fazendo para dentro

Streampad, e estão trabalhando completamente bem. Alguns caveats:
  1. Firefox não indicará o título do iframe na história da tecla Back. Se você gostar, você pode ajustar o título principal da página e aquele fará o truque. A razão que eu não faço este em Streampad é b/c o título é sempre a canção atual e eu não quero mudar aquele.
  2. Eu não passo vars à função final, assim que eu não a ajustei faço até isto. Seria realmente fácil fazer qualquer outra coisa semelhante - passagem justa em f como “func(’foo’)”. Então eval(f) justo em historyFunc em vez de adicionar-lhe ‘()’ antes' do ing eval.

No comments: