Links

Saturday, November 25, 2006

supporto del tasto Back.

Daniel Kantor ha effettuato una soluzione del tasto Back in Streampad e la ha ripartita con noi.

Uno dei gripes principali contro le applicazioni di fotoricettore del AJAX è come rompono

tasto back in un browser tipico. Ci sono stati alcune soluzioni (considerevolmente storia realmente semplice del Neuberg del Brad) ma nessun li hanno ottenuti che funzionano in Safari. GMail ancora non ha un tasto della parte posteriore di funzionamento in Safari.
Dicono la terza volta sono il fascino ed ho provato ad ottenere due volte una cosa del tasto Back in Streampad prima. Non desidero usare qualcun'altro biblioteca poichè sono solitamente più complesse di ho bisogno di e non ho desiderato mettere qualcosa sul posto fino a che non abbia avuto funzionamento Safari . Ho provato alcune tecniche differenti, ma quando lo ho ottenuto che funziona in Safari, si romperebbe in Firefox o in IE.
Infine ho calcolato fuori un senso ottenere questo funzionamento in Firefox, in IE e in Safari. Non lo ho esaminato in Opera. Qui è che cosa. Come di consueto, la vostra distanza in miglia varierà molto probabilmente.
  1. generare un iFrame con width=’1′, height=’1′, name=’hFrame’, id=’hFrame’ e frameBorder=’0′. È importante mantenerlo visibile alla pagina o non funzionerà in Safari. Poiché è 1×1 giusto, provare a nasconderlo in un angolo o in qualcosa.
  2. Generare questa funzione -
    function historyManager(f,t){
    frames[’hFrame’].location.href=”http://www.streampad.com/historyManFrame.php?f=” +f+”&t=”+t;
    }
    (ovviamente sostituto nel vostro dominio per example.com)
  3. Generare questa funzione -
    function historyFunc(f){
    f = f+”()”;
    eval(f);
    }
  4. Generano una pagina del php (o che cosa lingua) che accetta due vars GET - “f” e “t”
  5. Chiamare questa pagina “historyManFrame”.
  6. In “historyManFrame” messo questo -
    $f = $_GET[’f'];
    $t = $_GET[’t'];
  7. Nella modifica della testa messa all'interno di una modifica dello scritto -
    function hello(){
    document.title = “Streampad - < ? echo $t; ?>“;
    parent.historyFunc(”< ? echo $f; ?>“);
    }
  8. E nella modifica Body messa -
    onload=hello()

Ora che cosa sta andando accadere è questo:

  1. Denominare la funzione historyManager e passargli due vars String. la f è la funzione che infine vorreste denominare. la t è rivelare il titolo che vorreste fare nella storia del tasto Back.
  2. historyManager sta andando caricare la pagina (historyManFrame) nel iframe e passargli f e t come variabili GET.
  3. historyManFrame ora sta andando caricare e fare due cose. In primo luogo, regolerà il relativo proprio titolo a t variabile. Allora denominerà la relativa funzione historyFunc del genitore e passerà in f.
  4. la volontà historyFunc allora prende la funzione f (come stringa) e eval esso (che denominerà l'ultima funzione).

Ciò è esattamente che cosa sto facendo all'interno

Streampad ed esso sta funzionando abbastanza bene. Alcuni avvertimenti:
  1. Firefox non visualizzerà il titolo del iframe nella storia del tasto Back. Se gradiste, potete regolare il titolo principale della pagina e quello farà il trucco. Il motivo che non faccio questo in Streampad è b/c il titolo è sempre la canzone corrente e non desidero cambiare quello.
  2. Non passo i vars all'ultima funzione, in modo da non la ho regolata fino a faccio questo. Sarebbe realmente facile da fare qualcosa di simile - passaggio giusto in f come “func(’foo’)”. Allora eval(f) giusto in historyFunc invece di aggiunta del ‘()’ ad esso prima' di ing eval.

No comments: