2009-05-03 7 views
2

Ich benutze das IUI-Framework, um eine Website zu erstellen. Wenn Sie nicht damit vertraut sind, haben Sie eine Seite, die aus divs besteht, und Sie navagieren den Benutzer zwischen mit Fragment-IDs.Redirect/Refresh to Fragment Identifier

Das Problem damit ist, wenn Ihr Benutzer Inhalt hinzufügt, ist es nicht sichtbar, bis sie aktualisieren. In meiner Version fügen sie Daten zu einer Liste über jquery post hinzu, aber wie ich sage, sie sehen nichts bis zu einer Aktualisierung und sobald Sie eine Aktualisierung durchführen, geht es zum übergeordneten div, da das #fragment verloren gegangen ist.

So habe ich es geschafft, die Seite zu erhalten, um nach dem Update zu mywebsite.com/#_fragment gehen, mit window.location = mywebsite.com/#_fragment, aber es lädt nicht wirklich die Seite.

Wer irgendwelche Hinweise hat, wie man eine Seite zu einem Fragment aktualisiert?

Antwort

7

URI-Fragmentbezeichner sind nur clientseitig und werden nicht an den Server gesendet, d. H. Wenn Sie den HTTP-Anforderungsheader überprüfen, sehen Sie #_fragment nicht. Darüber hinaus werden durch das Vornehmen von Änderungen am URI, die nur das Fragment ändern, keine DOM-Ereignisse ausgelöst.

Während es Workarounds wie die Verwendung eines Aufrufs setInterval() gibt, um die Eigenschaft document.location.hash aktiv zu überwachen, ist es am einfachsten, einfach die Abfragezeichenfolge arg zu ändern. Zum Beispiel statt:

window.location = mywebsite.com/#_fragment 

umfassen eine Abfrage-String-Komponente wie:

window.location = mywebsite.com/?refresh=1#_fragment 

Die Anwesenheit des (oder ein anderer Schlüssel/Wert-Paar) wird der Browser "refresh = 1?" um eine Anfrage an den Server zu stellen, während der #hash-Bezeichner beibehalten wird.

Sehen Sie hier für weitere Informationen über das Objekt JS Standort: http://docs.sun.com/source/816-6408-10/location.htm

1

Ich glaube, würden Sie iui verwenden iPhone freundliche Web-Anwendung zu erstellen. Ich bin mir nicht sicher, ob Sie bereits iWebkit für das gleiche ausgewertet haben oder nicht. Ich habe mir sowohl iUI als auch iWebkit angeschaut und festgestellt, dass iWebkit viel besser funktioniert, stabil & einfach zu implementieren ist.

+0

Ich habe iWebkit nach Ihrem Beitrag gesehen. Es sieht so aus, als wäre es ein bisschen freundlicher als IUI. Einziger Nachteil ist, dass iUI jede Seite schön scrollt, während iWebkit die Adressleiste für jede Seite ablegt. Auch mit IUI wird jedes Javascript einmal heruntergeladen und das ist es. Sieht so aus, als würde Webkit das für jede Seite laden, was abhängig von Ihrem Datentarif teuer werden könnte. Wenn Sie sagen, dass Sie das Javascript auf nur das reduzieren könnten, was für diese Seite erforderlich ist. Schaukelt und dreht sich um. –

+0

könnten Sie möglicherweise jquery oder ein beliebiges Ajax-Framework verwenden, um auf derselben Seite zu bleiben, ohne die Adressleiste zu öffnen. Ich mache es auf diese Weise, also habe ich im Grunde einige Stücke von iUI in iWebkit gecubbt, was eine tödliche Kombination ergibt und Ihnen viel mehr Flexibilität gibt. – Vikram

+0

Wenn ich ein paar Stücke von IUI sage, meine ich das Konzept, auf der gleichen Seite zu bleiben, anstatt die Adressleiste zu öffnen und nicht buchstäblich Teile von iUI zu codieren. Sie können Ihre eigene Strategie nach Ihren Anforderungen erarbeiten. – Vikram