Links

Saturday, November 25, 2006

Taste Back Unterstützung.

Daniel Kantor hat eine Taste Back Lösung in Streampad eingeführt und hat sie mit uns geteilt.

Einer der Hauptgriffe gegen AJAX Netzanwendungen ist, wie sie brechen

Taste back in einer typischen Datenbanksuchroutine. Es hat einige Lösungen (vornehmlich Nagel ohne Kopf Neubergs wirklich einfache Geschichte) gegeben, aber keine haben es arbeitend in Safari. GMail noch hat nicht eine Funktion Rückseite Taste in Safari.
Sie sagen sind das dritte mal der Charme und ich habe versucht, eine Taste Back Sache in Streampad zweimal zu erhalten vorher. Ich möchte nicht jemand anderes verwenden Bibliothek, da sie normalerweise komplizierter sind, als ich benötige und ich nicht etwas an der richtigen Stelle setzen wollte, bis ich Funktion Safari hatte. Ich versuchte einige unterschiedliche Techniken, aber, als ich sie arbeitend in Safari erhielt, würde es Firefox oder IE einlaufen.
Ich stellte schließlich heraus eine Weise dar, diese Funktion in Firefox, in IE und in Safari zu erhalten. Ich habe sie nicht in Opera geprüft. Ist hier, was ich. Wie üblich, schwankt deine Meilenzahl höchstwahrscheinlich.
  1. ein iFrame mit width=’1′, height=’1′, name=’hFrame’, id=’hFrame’ und frameBorder=’0′ verursachen. Es ist wichtig, es sichtbar zu halten auf der Seite, oder es funktioniert nicht in Safari. Da es gerechtes 1×1 ist, versuchen, es in einer Ecke oder in etwas zu verstecken.
  2. Diese Funktion verursachen -
    function historyManager(f,t){
    frames[’hFrame’].location.href=”http://www.streampad.com/historyManFrame.php?f=” +f+”&t=”+t;
    }
    (offensichtlich Ersatz in deinem Gebiet für example.com)
  3. Diese Funktion verursachen -
    function historyFunc(f){
    f = f+”()”;
    eval(f);
    }
  4. Stellen eine php (oder was Sprache) Seite her, die zwei vars GET - “f” und “t” annimmt
  5. Diese Seite “historyManFrame” nennen.
  6. In “historyManFrame” gesetzt diesem -
    $f = $_GET[’f'];
    $t = $_GET[’t'];
  7. Im Kopf setzte sich der Umbau innerhalb eines Indexumbaus -
    function hello(){
    document.title = “Streampad - < ? echo $t; ?>“;
    parent.historyFunc(”< ? echo $f; ?>“);
    }
  8. Und in setzte sich der Body Umbau -
    onload=hello()

Jetzt was geschehen wird, ist dieses:

  1. Die Funktion historyManager benennen und es zwei vars String führen. f ist die Funktion, die du schließlich benennen möchtest. t ist der Titel, den du in der Taste Back Geschichte oben zeigen lassen möchtest.
  2. historyManager wird die Seite (historyManFrame) in das iframe laden und es f und t als Variablen GET führen.
  3. historyManFrame wird jetzt zwei Sachen laden und tun. Zuerst stellt es seinen eigenen Titel auf variables t ein. Dann benennt es seine Elternteilfunktion historyFunc und überschreitet in f.
  4. Wille historyFunc nehmen dann die Funktion f (als Zeichenkette) und eval es (das die entscheidende Funktion benennt).

Dieses ist genau, was ich nach innen tue

Streampad und es arbeiten ziemlich gut. Einige Einsprüche:
  1. Firefox zeigt nicht den Titel dem iframe in der Taste Back Geschichte an. Wenn du möchtest, kannst du den Hauptseite Titel einstellen und der tut den Trick. Der Grund, den ich nicht dies in Streampad tue, ist b/c der Titel immer das gegenwärtige Lied ist und ich möchte nicht den ändern.
  2. Ich führe vars nicht zur entscheidenden Funktion, also stellte ich sie nicht tue bis dies ein. Es würde wirklich einfach sein, etwas ähnliches - gerechter Durchlauf in f als “func(’foo’)” zu tun. Dann gerechtes eval(f) in historyFunc, anstatt, ‘()’ ihm vor eval' ing hinzuzufügen.

No comments: