J'écris un jeu en PHP/Zend Framework et Facebook JavaScript. Le plateau de jeu est affiché dans une fenêtre de défilement. Pour voir l'ensemble du plateau de jeu, l'utilisateur doit faire défiler. Chaque étape du jeu provoque une actualisation de la page, donc lorsque l'utilisateur passe à une autre étape, sa position de défilement est perdue et la fenêtre est retournée à sa position par défaut. Je me demande s'il existe un moyen de faire revenir automatiquement cette fenêtre de défilement à la position dans laquelle elle se trouvait avant que la page ne soit rafraîchie afin que l'utilisateur n'ait plus besoin de revenir à l'endroit où il se trouvait. Merci!Besoin d'un moyen de retourner la position de la fenêtre de défilement après la mise à jour de la page
Répondre
Si vous créez un jeu basé sur des liens, j'utiliserais AJAX pour envoyer les données de votre clic sur votre serveur, les traiter et les renvoyer à l'utilisateur sans actualiser la page. Cela vous évitera de faire défiler la page en utilisant JS, et cela rendra le jeu beaucoup plus rapide et agréable pour les utilisateurs.
Enregistrez la position dans onunload (ou après chaque événement de défilement) dans Window.name ou dans un cookie, puis faites défiler jusqu'à ce point lors du chargement de la page. Mais la solution Ajax est une meilleure approche de ce que vous faites.
J'ai essayé cette solution, mais je n'ai pas réussi à l'utiliser car j'utilise Facebook JS et je n'ai pas accès à la balise
, donc je ne peux pas mettre en œuvre onload/onunload. J'ai trouvé une solution de contournement pour onload, mais pas pour onunload. J'ai essayé d'utiliser setInterval() pour mettre à jour un cookie avec la position de défilement actuelle, mais j'ai également découvert que FB désactive l'accès aux cookies): Ajax impliquerait de réécrire la plupart de mon application, et je n'ai tout simplement pas le temps. J'ai envisagé d'utiliser setInterval() et un appel ajax pour envoyer les coords de défilement au backend toutes les quelques secondes. Est-ce que cela semble ... –comme il accablerait le serveur pour obtenir ces appels ajax de chaque utilisateur toutes les 1-5 secondes? –
Dépend vraiment du serveur ... Vous pouvez ajouter dynamiquement des événements au corps à l'intérieur des balises de script. quelque chose sur les lignes de: body.onload = f; // f est une fonction. Bien sûr, vous devez trouver la bonne syntaxe. –
Utilisez <a name="game">
et rafraîchir à gamePage.html#game
Mais cela impliquerait d'ajouter une ancre à chaque élément cliquable sur ce que je suppose être un plateau de jeu «en mosaïque». Ce serait un diable de beaucoup d'ancres. – BraedenP
PHP pourrait ajouter une seule ancre à l'endroit désiré. –
Non .... l'ancre doit être créée après chaque événement de défilement. Cela ressemble beaucoup à un mal de tête, et je ne pense pas que vous pouvez changer l'URL de la page sans provoquer l'actualisation de la page. –
- 1. Conserver la position de défilement dans les zones de liste dans les panneaux de mise à jour, PAS la page
- 2. Hauteur du panneau de mise à jour restant la plus grande taille après la mise à jour
- 3. Mise à jour de la région derrière une fenêtre redimensionnée
- 4. ReturnUrl et conserve la position de défilement?
- 5. Vitesse de défilement avec la position de la souris
- 6. Comment déterminer la hauteur et la position de défilement d'une fenêtre dans jQuery?
- 7. html position de la page statique après l'actualisation
- 8. Comment éviter de clignoter lors de la mise à jour de la page d'ajax
- 9. Besoin de la fonctionnalité de la page de commentaires UserVoice
- 10. Comment appeler une fonction après la fin de la mise à jour dans un panneau de mise à jour?
- 11. Persistance de la position de défilement de DIV pendant l'impression
- 12. Déterminer la position de la fenêtre du navigateur en JavaScript?
- 13. Ajax mise à jour de la barre de défilement du panneau numéro
- 14. Évitez la mise en cache après la mise à jour de l'image pour Paperclip
- 15. fpdf - retourner à la page précédente
- 16. Mise à jour de la page parent ASP.NET avec JavaScript?
- 17. Comment conserver la position de défilement en utilisant la page maquette?
- 18. Position de la fenêtre d'un fichier CHM
- 19. Retour au début de la position actuelle de la fenêtre par rapport au corps du document
- 20. Ajax: actualisation partielle d'une page parente (mise à jour d'une div) de la fenêtre "lightbox"
- 21. Asp.net detailsview - obtenir des données après la mise à jour
- 22. MySQL sur la mise à jour de la clé dupliquée
- 23. Interrogation de la position GPS via la page wap
- 24. Problème de mise à disposition de l'iPhone après la mise à jour 3.0.1
- 25. JTable pas de mise à jour lors de la sélection
- 26. Mise à jour de la version
- 27. Rafraîchir la position de défilement de UITextView sur l'iPhone
- 28. Permuter la classe CSS sur la base de la position de défilement avec Javascript
- 29. Mise à jour du panneau sur la page maître actualise également les panneaux de mise à jour de page enfant
- 30. Défilement lisse vers le haut de la page après un ajax ajback postback
+1. Le défilement automatique des pages est incroyablement ennuyeux –
Je vous entends, et je suis totalement d'accord. Le problème est que je suis vraiment nouveau à AJAX. J'ai un peu de code AJAX dans mon application, mais écrire l'application entière dans AJAX me semble être le résultat de cette énorme application frontend avec des appels backend fréquents. Je suis familier avec l'organisation de mon application dans Zend Framework, mais je n'ai pas la moindre idée sur la façon d'organiser une application frontend comme celle-ci, donc je m'en tiens à ce que je sais. –