Salut à tous !
je suis en train de coder un petit script de gestion des navigations Ajax. Le but est de pouvoir faire en sorte que lors du déclenchement des boutons back() et forward() de navigateur, nous puissions retrouver les informations ayant été utilisées par Ajax pour générer cette page ...
Tout d'abord, j'utilise prototype pour tout le script, mais la fin justifiant les moyens, si vous connaissez des scripts qui fonctionnent sous d'autres lib, je suis preneur (au moins pour les idées utilisées)
lors de la navigation, prototype utilises 2 arguments dans sa fonctions Ajax.Request(url, options)
Donc, en parallèle, je stocke dans un tableau ses éléments
this.request.push({url:url, obj:options});
ensuite, j'ai un formulaire et une iframe planqués dans la page, j'attribut formulaire.action = url et j'envoi le formulaire formulaire.submit() (naturellement, le formulaire pointe sur la frame et de ce fait, l'url de la frame change sans que cela n'apparaisse à l'écran.
Je stocke l'url de la page en cours de chargement (utilisée par la suite)
this.urlOnLoad = url ;
et j'envoi le traitement de la requete Ajax.
en parallèle de tout ceci, j'ai une fonction récurrente (0.1s) qui compare url en cours (this.urlCurrent) avec l'url de la frame
Si celles-ci ne sont pas identiques, nous vérifions la présence et comparons avec this.urlOnLoad
- en cas de succès (page nouvellement chargée) nous lançons une fonction qui va vider this.urlOnLoad et attribuer à this.urlCurrent la valeur de la page nouvellement appelée.
- en cas d'echec, nous nous trouvons devant une modification de la frame depuis le navigateur, et donc nous laçons une fonction qui va récupérer nos objets et lancer une nouvelle requete en incrémentant this.urlOnLoad (naturellement)
Tout ceci fonctionne bien pour les back() sous FireFox ...

oui, la programmation est plus aisée ainsi !
L'objet de ce post est le suivant :
- Avez vous étés confronté à ceci ?
- la méthodologie employée semble-t-elle Bonne ?
- avez vous des suggestions pour modifier la navigation autrement qu'en se servant du formulaire ?
- sur quelles pistes pourrais-je partir pour etre compatible webkit et IE !?
Dans l'attente, merci
