2009-05-03 9 views
2

Im en utilisant le cadre iUI pour créer un site. Si vous n'êtes pas familier avec cela, vous avez une page composée de divs et vous naviguez l'utilisateur entre avec des identifiants de fragment.Rediriger/Actualiser vers l'identificateur de fragment

Le problème avec ceci est que si votre utilisateur ajoute du contenu, il n'est pas visible tant qu'il n'est pas actualisé. Dans ma sistation, ils ajoutent des données à une liste via jquery post, mais comme je dis qu'ils ne voient rien jusqu'à un rafraîchissement et une fois que vous faites un rafraîchissement, il va à la div parent comme le # fragment a été perdu.

J'ai donc réussi à obtenir la page pour aller à mywebsite.com/#_fragment après la mise à jour using window.location = mywebsite.com/#_fragment mais il ne recharge pas réellement la page.

Quelqu'un a des indices a comment rafraîchir une page à un fragment?

Répondre

7

Les identificateurs de fragment d'URI sont uniquement côté client et ne sont pas envoyés au serveur, c'est-à-dire que si vous inspectez l'en-tête de requête HTTP, vous ne verrez pas #_fragment. En outre, apporter des modifications à l'URI qui modifie uniquement le fragment ne déclenchera aucun événement DOM.

Bien qu'il existe des solutions de contournement comme l'utilisation d'un appel setInterval() pour surveiller activement la propriété document.location.hash, le plus simple est de simplement modifier la chaîne de requête arg. Par exemple, au lieu de:

window.location = mywebsite.com/#_fragment 

comprennent un élément de chaîne de requête comme:

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

La présence du (ou toute autre paire de clés/valeur) provoquera le « Refresh = 1? » faire une requête au serveur, tout en préservant l'identifiant #hash.

Voir ici pour plus d'informations sur l'objet de l'emplacement JS: http://docs.sun.com/source/816-6408-10/location.htm

1

Je crois que vous utilisez pour construire iUI-application web conviviale iPhone. Je ne suis pas sûr si vous avez déjà évalué iWebkit pour le même ou pas. J'ai regardé iUI et iWebkit à la fois et trouvé iWebkit à être beaucoup plus en vedette, stable & facile à mettre en œuvre aussi bien.

+0

J'ai regardé iWebkit après votre publication. On dirait que c'est un peu plus sympa que iUI. Seul inconvénient est iUI défile bien chaque page où iWebkit descend la barre d'adresse pour chaque page. Aussi avec iUI tout javascript est téléchargé une fois et c'est tout. On dirait que webkit chargera cela pour chaque page qui, en fonction de votre plan de données, pourrait s'avérer exsudative. En disant que vous pourriez réduire le javascript à seulement ce qui est requis pour cette page. Balançoires et abouts ronds. –

+0

vous pouvez éventuellement utiliser jquery ou n'importe quel framework ajax pour rester sur la même page sans ouvrir la barre d'adresse. Je le fais de cette façon, donc en gros j'ai matraqué quelques morceaux d'iUI dans iWebkit qui fait un combo mortel et vous donne beaucoup plus de flexibilité. – Vikram

+0

Quand je dis quelques morceaux d'IUI, je veux dire le concept de garder sur la même page plutôt que de faire apparaître la barre d'adresse et pas littéralement les morceaux de code de l'IUI. vous pouvez élaborer votre propre stratégie en fonction de vos besoins. – Vikram

Questions connexes