11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour et merci d'avance pour votre lecture,

Avec l'arrivée d'Ajax il est conseillé d'utiliser l'objet avec javascript en utilisant par exemple Prototype.
Dans mon cas, j'ai besoin d'un objet permettant de conserver un score d'une page à une autre, j'ai donc créé l'objet suivant :
Code :

function Obj(){ this.score = 0; this.array = {page1 = 'YES'; page2 = 'NO'}; } Obj.prototype.getScore = function{ alert(this.score); } Obj.prototype.setScore = function(score){ this.score = score; } Obj.prototype.setScore = function(form){ //Identifier la page form.name; //Verifier le resultat }


Idéalement, j'aimerai modifier cet objet sur une page(page1), récupérer sa référence sur la page 2 et incrémenté la variable score etc...page3 , page4

Question : Comment faire pour conserver un référence sur mon objet d'une pageA à une pageB ?
Salut,
krisbrau a écrit :
Avec l'arrivée d'Ajax il est conseillé d'utiliser l'objet avec javascript en utilisant par exemple Prototype.
Euh... Non. Smiley smile D'ailleurs, il faut bien comprendre que JavaScript est un langage objet, même si l'on n'utilise pas des ersatz de classes Java. La notion de classe, par contre, n'existe pas et ne peut pas être simulée de façon fiable.
krisbrau a écrit :
function Obj(){ this.score = 0; this.array = {page1 = 'YES'; page2 = 'NO'}; } Obj.prototype.getScore = function{ alert(this.score); } Obj.prototype.setScore = function(score){ this.score = score; } Obj.prototype.setScore = function(form){ //Identifier la page form.name; //Verifier le resultat }
L'utilisation de setters et getters est aburde dans ton cas, puisque la propriété score est accessible depuis l'extérieur de ta "classe".
krisbrau a écrit :
Question : Comment faire pour conserver un référence sur mon objet d'une pageA à une pageB ?
C'est impossible.

La transmission de l'information doit se faire via les mécanismes habituels des pages (X)HTML : soit directement dans le contenu de la page, soit par l'intermédiaire d'un cookie.
Ok merci pour ta réponse rapide.
a écrit :
L'utilisation de setters et getters est aburde dans ton cas, puisque la propriété score est accessible depuis l'extérieur de ta "classe".

Pourtant je trouve cette facon de coder plus propre et elle permet de créer plusieurs instances d'un objet(cela peut être pratique dans certain cas).

a écrit :
C'est impossible.

Même pas la sérialization ?
krisbrau a écrit :
L'utilisation de setters et getters est aburde dans ton cas, puisque la propriété score est accessible depuis l'extérieur de ta "classe".
Pourtant je trouve cette facon de coder plus propre et elle permet de créer plusieurs instances d'un objet(cela peut être pratique dans certain cas).Je ne vois pas le rapport. Smiley smile
krisbrau a écrit :
C'est impossible.
Même pas la sérialization ?Sérialisation à la main...
krisbrau a écrit :

Question : Comment faire pour conserver un référence sur mon objet d'une pageA à une pageB ?


Les références sur les objets sont perdues si tu quitte la page dans laquelle elles ont été définies. Ceci t'oblige à sauver tes objets sur le serveur ou
à l'aide de cookies, il faut alors les sérialiser.

Donc, il te faut éviter de quitter cette page Smiley smile

Plusieurs approches possibles:

1) Les bons vieux framesets

Si tu as un frameset qui contient un frame, tu peux facilement naviguer dans le frame sans jamais quitter le frameset.
Tu peux sauver tes références au niveau du frameset et y accéder par parent.nom_de_variable

2) Ajax

Au lieu de changer de page tu la recharge en partie. Tu peux même recharger tous le contenu du body.

3) Avec une popup

Tu commences par ouvrir ta première page par un window.open, et
tu peux ensuite accéder à la fenêtre originale par window.opener

Il existe peut-être d'autre solutions Smiley smile