2009-09-17 5 views
3

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

3

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.

+0

+1. Le défilement automatique des pages est incroyablement ennuyeux –

+0

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. –

2

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.

+0

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 ... –

+0

comme il accablerait le serveur pour obtenir ces appels ajax de chaque utilisateur toutes les 1-5 secondes? –

+0

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. –

0

Utilisez <a name="game"> et rafraîchir à gamePage.html#game

+0

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

+0

PHP pourrait ajouter une seule ancre à l'endroit désiré. –

+0

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. –

Questions connexes