11548 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour

lorsque les internautes arrivent à la page de validation de leur inscription à la newsletter (accessible depuis n'importe quelle page du site) j'aimerai leur proposer un lien de retour vers la page précédente.

Je sais qu'il faut utilise la fonction JS :
Javascript:history.go(-1)


Mais comment faire pour la mettre dans un lien seulement visible si JS est activé ?

Merci
Modifié par Gunner4902 (19 Feb 2007 - 23:41)
On laissera l'utilisateur naviguer tranquillement dans une structure et un interface de site bien fait. Ce qui exclut la page de résultat d'inscription à la newsletter en forme de cul de sac, natirellement. Et aussi ce genre de bidouilles.
Merci Julien pour ces précisions.

Laurent Denis a écrit :
On laissera l'utilisateur naviguer tranquillement dans une structure et un interface de site bien fait. Ce qui exclut la page de résultat d'inscription à la newsletter en forme de cul de sac, natirellement. Et aussi ce genre de bidouilles.

Je suis d'accord dans le fond, cependant ici, il ne s'agit pas d'une page cul de sac, puisqu'elle a tous les menus etc ... Je pensais donc qu'un "history" éviterait de casser la navigation ou de recourir à la flèche verte du navigateur ...
Comment faire donc (dans l'idéal) ?
Gunner4902 a écrit :

Mais comment faire pour la mettre dans un lien seulement visible si JS est activé ?


De manière très générale dans le cas de liens uniquement opérants si le javascript est actif, le mieux c'est de créer complètement le lien, l'élément a, en javascript au moyen des fonctions du Document Object Model (DOM) et d'insérer cet élément à la bonne place dans le flux toujours au moyen du DOM.

Une autre possibilité, beaucoup plus intéressante si les circonstances le permettent c'est de penser l'action du script comme surcouche optimisant une opération native et utile du lien concerné. Là le plus simple c'est de modifier le href de ce lien, toujours grâce au DOM.

<edit>
Tu remarqueras donc que le caractère obligatoirement discret que devrait avoir le javascript ne se conçoit pas en terme de visible/non visible dans un rendu à l'écran mais en terme de présent/non présent dans le code source lui même.
</edit>
Modifié par Christian Le Bouler (19 Feb 2007 - 13:52)
Un peu comme ça :
<script type="text/javascript">document.write("<a href='Javascript:history.go(-1)'>Retour à la page précédente</a>");</script>
?
Christian Le Bouler a écrit :
write() n'est pas une fonction du DOM.
Peut-être pas, mais c'est une fonction très largement supportée. Pour ma part, je trouve qu'il n'est pas idiot de l'utiliser dans ce cas-là (à condition que la page ne soit pas servie en tant que application/xhtml+xml).

Par contre, ça ne règle bien entendu pas le problème de l'historique. Une des possibilités est d'ajouter aux liens vers la page d'inscription à la newsletter l'url courante dans un paramètre. Et ensuite, de générer le lien de retour à la page précédente en fonction de ce paramètre. Mais j'imagine que ça peut vite devenir lourd.
Julien Royer a écrit :
Peut-être pas, mais c'est une fonction très largement supportée.


C'est le Mal.

Ne cherchez pas plus loin.

Aucun script abordant le document.write ne mérite le moindre intérêt.

Pour une fois qu'on sera absolutiste, plongez-vous avec frénésie dans le non ! Smiley biggol
Modifié par Laurent Denis (19 Feb 2007 - 14:27)
Certains faisaient ômmmmm.

L'homme moderne fait dômmmmmm.

Il ne sait pas davantage pourquoi, mais peut importe. Il le fait. C'est qui rapporte.
Modifié par Laurent Denis (19 Feb 2007 - 14:30)
Julien Royer a écrit :
Peut-être pas, mais c'est une fonction très largement supportée.


Sauf que dans les règles de bonne approche du javascript il y a outre le caractère de discrétion celui de non intrusion. Donc a minima externalisé du <body> du document voire même du document tout court en tant que fichier.js lié.
Laurent Denis a écrit :
Il ne sait pas davantage pourquoi, mais peut importe. Il le fait. C'est qui rapporte.
Et l'on peut toujours sacrifier de jeunes vierges, au moins ?
Christian Le Bouler a écrit :
Sauf que dans les règles de bonne approche du javascript il y a outre le caractère de discrétion celui de non intrusion. Donc a minima externalisé du <body> du document voire même du document tout court en tant que fichier.js lié.
Certes, c'est un sujet que je connais. Smiley cligne

Ceci dit, pour ce besoin précis, le couplage entre le HTML et le JavaScript est énorme puisque l'on génère un contenu dans le code JavaScript. Il n'y a donc aucun intérêt à externaliser le JavaScript, sauf peut-être pour l'alourdir.

Par contre, je suis bien d'accord sur le fait qu'une solution à base de langage serveur serait bien plus adaptée. Smiley smile
Modifié par Julien Royer (19 Feb 2007 - 14:36)
Oulà, déjà que JS est du coté obscur pour moi, mais là ...
Bon je m'essaye quand même, car il faut bien le faire pour apprendre !

dans <head>
<script type="text/javascript">
<!--
 function history.go(-1)
 document.getElementsByTag("newsletter_bottom") = true;
}
//-->
</script>


dans <body>
<div id="newsletter_bottom">
		<script type="text/javascript">	document.write("<a href='Javascript:'>Retour à la page précédente</a>");
		</script>
		<noscript><em>Cliquez sur le bouton 'Page précédente' de votre navigateur.</em></noscript>
	</div>


/* Je me prépare au verdict de Laurent Denis ... Smiley sweatdrop */


sinon pour la petite histoire, j'ai mis pour le moment document.write en place, comme montré plus haut, et si on appelle le form "newsletter" depuis la page a.php, l'on arrive donc sur la page qui contient le document.write, et lors du clique sur le lien en JS l'on revient bien sur a.php ... Smiley ravi

Julien Royer a écrit :
Par contre, je suis bien d'accord sur le fait qu'une solution à base de langage serveur serait bien plus adaptée. Smiley smile
Moi itou, je n'ai jamais aimé les langages coté clients, mais je ne voyais pas d'autre solution dans ce cas précis ...
Modifié par Gunner4902 (19 Feb 2007 - 14:45)
a écrit :
<noscript><em>Cliquez sur le bouton 'Page précédente' de votre navigateur.</em></noscript>


Je le savais déjà, hé, banane.

Non, mais, c'est pas fini de réinventer l'interface du navigateur en plus tarte ?

Sgmbl.
Modifié par Laurent Denis (19 Feb 2007 - 14:46)
Julien Royer a écrit :
Certes, c'est un sujet que je connais. Smiley cligne



Smiley confused Smiley confused Smiley confused Oui je sais bien, j'ai foncé dans mon argument sans précautions Smiley smile

a écrit :

Ceci dit, pour ce besoin précis, le couplage entre le HTML et le JavaScript est énorme puisque l'on génère un contenu dans le code JavaScript. Il n'y a donc aucun intérêt à externaliser le JavaScript, sauf peut-être pour l'alourdir.


Mmmm...

Ce raisonnement même s'il doit pouvoir être tenu (le jeune padawan préfère laisser le grand maitre de la secte administrer les malédictions Smiley langue ) ne peut quoiqu'il soit ne concerner que des scripteurs expérimentés et au clair sur leurs pratiques.

Je m'explique : ce que tu décris est un raccourci en fonction d'un certain contexte. De tels raccourcis ne peuvent au mieu être envisager que sur une base de maitrise des technique ad hoc. Donc un respect scrupuleux des méthodes du DOM. Plus la personne est débutante plus elle doit en passer par là.

a écrit :

Par contre, je suis bien d'accord sur le fait qu'une solution à base de langage serveur serait bien plus adaptée.


Oui c'est un autre point des règles de l'utilisation de javascript, et le plus difficile suivant les circonstances. Toujours penser surcouche ne jamais en rester au principe de discrétion. En terme de méthode de travail c'est important je crois.
Modifié par Christian Le Bouler (19 Feb 2007 - 15:47)
Christian Le Bouler a écrit :
Ce raisonnement même s'il doit pouvoir être tenu (le jeune padawan préfère laisser le grand maitre de la secte administrer les malédictions Smiley langue ) ne peut quoiqu'il ne concerné que des scripteurs expérimentés et au clair sur leurs pratiques.
Meuh non, c'est Laurent le gourou, il a une voix très harmonieuse pour les dômmmmmm.
Christian Le Bouler a écrit :
Je m'explique : ce que tu décris est un raccourci en fonction d'un certain contexte. De tels raccourcis ne peuvent au mieu être envisager que sur une base de maitrise des technique ad hoc. Donc un respect scrupuleux des méthodes du DOM. Plus la personne est débutante plus elle doit en passer par là.
C'est vrai. Mais c'est tellement difficile d'aller contre la majorité des informations que l'on trouve sur le Web...
Gunner4902 a écrit :
Moi itou, je n'ai jamais aimé les langages coté clients, mais je ne voyais pas d'autre solution dans ce cas précis ...
Et un truc comme ça ?
Julien Royer a écrit :
Une des possibilités est d'ajouter aux liens vers la page d'inscription à la newsletter l'url courante dans un paramètre. Et ensuite, de générer le lien de retour à la page précédente en fonction de ce paramètre.
Julien Royer a écrit :
Une des possibilités est d'ajouter aux liens vers la page d'inscription à la newsletter l'url courante dans un paramètre. Et ensuite, de générer le lien de retour à la page précédente en fonction de ce paramètre.

Vu que le formulaire d'inscription est en fait un form mis en <?include dans toutes les pages du site, il n'a pas d'url propre pour permettre un lien retour. C'est ça le problème ...
Gunner4902 a écrit :
Vu que le formulaire d'inscription est en fait un form mis en <?include dans toutes les pages du site, il n'a pas d'url propre pour permettre un lien retour. C'est ça le problème ...
Et avec $_SERVER['PHP_SELF'] ?
Pages :