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.
- 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.
- 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) - Criar esta função -
function historyFunc(f){
f = f+”()”;
eval(f);
} - Cría o que língua) uma página do php (ou que aceite dois vars GET - “f” e “t”
- Nomear esta página “historyManFrame”.
- Em “historyManFrame” posto isto -
$f = $_GET[’f'];
$t = $_GET[’t']; - No Tag da cabeça posto dentro de um Tag do certificado -
function hello(){
document.title = “Streampad - < ? echo $t; ?>“;
parent.historyFunc(”< ? echo $f; ?>“);
} - E no Tag Body posto -
onload=hello()
Agora o que está indo acontecer é este:
- 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.
- historyManager está indo carregar a página (historyManFrame) no iframe e passar-lhe f e t como as variáveis GET.
- 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.
- 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:- 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.
- 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:
Post a Comment