[javascript] dernier lien cliqué

dernier lien cliqué [javascript] - HTML/CSS - Programmation

Marsh Posté le 29-01-2007 à 21:43:43    

:hello:  
 
mon site contient deux frames, l'une qui est le menu l'autre le contenu, et j'aimerais que quand on clique sur un des éléments du menu que le dernier lien cliqué se démarque des autres (en s'affichant d'une autre couleur, par exemple). j'ai testé les "link: active", "link: visited" etc... mais j'en trouve pas un qui a la fonction que je recherche...


Message édité par xphanoo le 12-02-2007 à 18:16:43
Reply

Marsh Posté le 29-01-2007 à 21:43:43   

Reply

Marsh Posté le 29-01-2007 à 22:19:00    

Ce que tu veux c'est afficher l'endroit ou tu es.
 
Tu peux pas faire ça en HTML direct.
 
Donc faut 2-3 truc en langage serveur.
 
Sinon, enlève les frames, ça se fait plus depuis les années 20.

Reply

Marsh Posté le 29-01-2007 à 22:39:05    

Ouai enfin il me semble que ça reste faisable en js. Et dans la mesure où c'est un effet purement esthétique, donc pas du tout indispensable, ça me parait plus judicieux parce que plus simple.
 
Sauf dans le cas où il supprimerais ses frames et à ce moment là oui faire ça côté serveur.

Reply

Marsh Posté le 29-01-2007 à 22:45:45    

C'est sur, qu'il est plus à ça près ;)

Reply

Marsh Posté le 29-01-2007 à 23:48:33    

Ya un peu de ça aussi oui  :D

Reply

Marsh Posté le 30-01-2007 à 00:43:34    

en javascript ça se fait bien :D


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 31-01-2007 à 16:18:36    

les frames c'est bien, ça permet de mieux structurer le site !
merci je vais chercher coté javascript  ;)

Reply

Marsh Posté le 31-01-2007 à 16:31:54    

xphanoo a écrit :

les frames c'est bien, ça permet de mieux structurer le site !
merci je vais chercher coté javascript  ;)


 
Mais bien sûr! Et la marmotte, elle met le chocolat dans le papier d'allu :sarcastic:  
Et les <div>, ça pas fait pour ça, justement???

Reply

Marsh Posté le 31-01-2007 à 17:46:24    

+1 pour les div's :p

Reply

Marsh Posté le 31-01-2007 à 18:06:02    

bah pour faire une bordure fixe au site, avec le contenu qu'on fait défiler avec une scrollbar dans la page tu peux pas le faire avec un div  :o
enfin ce que j'utilise c'est un IFRAME

Message cité 1 fois
Message édité par xphanoo le 31-01-2007 à 18:07:00
Reply

Marsh Posté le 31-01-2007 à 18:06:02   

Reply

Marsh Posté le 31-01-2007 à 18:11:37    

xphanoo a écrit :

bah pour faire une bordure fixe au site, avec le contenu qu'on fait défiler avec une scrollbar dans la page tu peux pas le faire avec un div  :o
enfin ce que j'utilise c'est un IFRAME


 
en css,  overflow: scroll; ça te dit qq chose?  :pfff:
 
Si on te dit de laisser tomber les frames ou iframes et d'utilsier les div, c'est pas pour t'embêter, c'est pour ton bien ;)


Message édité par rufo le 31-01-2007 à 18:12:40
Reply

Marsh Posté le 31-01-2007 à 18:15:52    

lol c'est bon hein je savais pas  :o  
pourquoi vous aimez pas les frames ? bientot ça sera plus supporté par les nouvelles normes du html?

Reply

Marsh Posté le 31-01-2007 à 18:27:24    

demande à google de passer sur ton site pour le référencer et demande ensuite dans google (une fois qu'il est passé) de te sortir la page qui contient une partie du texte de ton site. Tu véras alors que google t'envéras directement sur la fameuse page et que tu n'auras donc pas droit au menu du site.
Pour un visiteur, les frames l'empéche de mettre en favoris une page en particulier où d'envoyer un lien vers la dite page à une tierce personne.
 
Rien qu'avec ces deux exemples, je pense que tu comprends le probléme des frames.

Reply

Marsh Posté le 31-01-2007 à 18:42:07    

et pour répondre à ta question, oui, en XHTML 1.0 strict, les frames sont considérées comme des "erreurs"...Bref, c'est pas valide pour le validateur du w3c.


Message édité par rufo le 31-01-2007 à 18:42:30
Reply

Marsh Posté le 31-01-2007 à 19:16:14    

rufo > Même chose en html 4.0 strict de mémoire, les frames n'ont été autorisé que dans les versions "frameset" des normes du W3C.

Reply

Marsh Posté le 31-01-2007 à 22:02:46    

ça pue les frames -_- ça devrait même pas exister


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 01-02-2007 à 10:14:40    

zecrazytux > Avant l'arrivé de langages comme le php ou l'asp, il était quasiment impossible de faire un menu sans frame à moins de le recopier partout à la main. En fait, à l'époque, les deux seules méthodes qui permettait de faire ça étaient la création de CGI (donc langage C, C++, ... et dans le meilleur des cas PERL) qui n'étaient accepté que par des hébergeurs trés cher ou l'utilisation d'un programme qui modifiait toutes les pages d'un dossier afin d'y rajouter le menu (aucun programme de ce genre n'étant conus par le grand public, ca revenait à se le créer soit même)
A une époque où cette balise a été créé, elle répondait à un trés grand besoin du net. Maintenant c'est sur que son utilité à fortement baissé grace à l'arrivé de langages serveur trés répendus chez ces derniers.

Reply

Marsh Posté le 05-02-2007 à 21:28:32    

par contre j'ai un autre souci, une fois que j'ai mis le div comment faire varier le contenu a l'intérieur quand on clique les liens ? car au départ j'avais utilisé les frames dans le but de ne pas devoir recharger toute la page (menu+contenu) a chaque clic sur un lien...
je suis obligé de passer par du javascript ou du php ?

Reply

Marsh Posté le 05-02-2007 à 22:07:47    

non, enfin, tu vois, on part du principe que si un site est bien coder, le recharger en entier, ça se fait en 2 sec.
 
Pour cela, utilise bien, le HTML, sépare le CSS.
 
Si tu as un serveur, ou tu peux utiliser un langage comme php, ou asp, ....
 
Ben tu fais des inclusions.
 
Tu sépares le HTML redondant, dans 1 fichier, que tu appelles.
 
Si tu as pas ça. Le mieux:  code sous Dreamweaver, ou autre, et fait un systéme de template, qui à la fin te pond l' HTML, sans que tu fais 10.000 copier coller.
 
Bon le mieux est un langage serveur, avoir des connaissances de son utilisation après c'est secondaire, car toi, tu utiliseras au bas mot , un ligne de code...

Reply

Marsh Posté le 06-02-2007 à 10:30:35    

xtof_83 a écrit :

non, enfin, tu vois, on part du principe que si un site est bien coder, le recharger en entier, ça se fait en 2 sec.
 
Pour cela, utilise bien, le HTML, sépare le CSS.
 
Si tu as un serveur, ou tu peux utiliser un langage comme php, ou asp, .... ou python, ruby...
 
Ben tu fais des inclusions.
 
Tu sépares le HTML redondant, dans 1 fichier, que tu appelles.
 
Si tu as pas ça. Le mieux:  code sous Dreamweaver, ou autre, et fait un systéme de template, qui à la fin te pond l' HTML, sans que tu fais 10.000 copier coller.
 
Bon le mieux est un langage serveur, avoir des connaissances de son utilisation après c'est secondaire, car toi, tu utiliseras au bas mot , un ligne de code...


 
 
le mieux c'est:  
 
- "template" avec la mise en page de ton site: html + css, en deux fichiers (un fichier .css séparé)
- language coé serveur comme le php
 
tu utilise un moteur de template dans ce language, qui permet de placer du texte, des valeurs, du contenu quoi, au beau milieu de ta mise en page
 
ce qui permet de séparer le contenu du contenant
 
sans language serveur, tu fais une page bien mise en page etc, mais sans contenu. tu la prend ensute comme modele pour la remplir pour faqire chaque page de ton site (le principe des templates dreamweaver mais faut être fan de ce logiciel, moi perso je fais mes pages web sous vim et le systeme des templates, je l'utilise pareil, c'est rien que du copier coller :D)


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 06-02-2007 à 10:32:32    

omega2 a écrit :

zecrazytux > Avant l'arrivé de langages comme le php ou l'asp, il était quasiment impossible de faire un menu sans frame à moins de le recopier partout à la main. En fait, à l'époque, les deux seules méthodes qui permettait de faire ça étaient la création de CGI (donc langage C, C++, ... et dans le meilleur des cas PERL) qui n'étaient accepté que par des hébergeurs trés cher ou l'utilisation d'un programme qui modifiait toutes les pages d'un dossier afin d'y rajouter le menu (aucun programme de ce genre n'étant conus par le grand public, ca revenait à se le créer soit même)
A une époque où cette balise a été créé, elle répondait à un trés grand besoin du net. Maintenant c'est sur que son utilité à fortement baissé grace à l'arrivé de langages serveur trés répendus chez ces derniers.


 
 
oui, je plussoie en effet. j'aurai du dire "ça devrait même plus exister :D


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 12-02-2007 à 18:14:38    

re
 
alors j'ai trouvé mon bonheur en javascript, on choisit 2 couleurs (lien normal et dernier lien cliqué):
 

Code :
  1. function changeColor(myElement){
  2. var links = document.getElementsByTagName('a');//On créé un tableau comprenant tous les liens de la page.
  3. for(var i=0;i<links.length;i++)
  4.  links[i].style.color = '#EEE'; //On donne la couleur 002B9E à tous les liens de la page.  
  5. myElement.style.color ='#E00'; //On donne la couleur FF0000 au lien venant d'être cliqué.
  6. }


 
ensuite dans mes liens je rajoute: onClick="changeColor(this);" et ça marche
 
 
sauf qu'il y a un petit problème: du coup le changement de couleur link:hover du css (quand on survole le lien) ne fonctionne plus ! on dirait que le script rafraichit en permanence la couleur des liens donc le css n'a plus de controle sur la couleur des liens... y-a-t il un moyen pour régler ce problème?

Reply

Marsh Posté le 18-02-2007 à 11:29:27    

j'ai changé de design de site (j'en ai téléchagé un tout fait que j'ai bien modifié), toujours avec un IFRAME mais j'ai trouvé de quoi supprimer presque tous les défauts des frames:
 

  • les balises <noframes></noframes>, vous mettez dedans les liens menant vers toutes vos autres pages, comme si c'était le menu de votre site, comme ça le robot de référencement tiendra compte de tous vos liens comme s'il s'agissait d'un site "normal" :)


  • un petit code a insérer a la fin de toutes vos pages qui seront affichées dans l'iframe:


<SCRIPT Language="javascript">
if (parent.frames.length==0) parent.location.href="index.htm"
</SCRIPT>
 
ça va éviter que des visiteurs tombent sur une page sans menu quand ils voient votre site sur google ou autre, il recharge la frame principale si il ne la détecte pas  :)

Reply

Marsh Posté le 18-02-2007 à 22:45:26    

xphanoo a écrit :

<SCRIPT Language="javascript">
if (parent.frames.length==0) parent.location.href="index.htm"
</SCRIPT>
 
ça va éviter que des visiteurs tombent sur une page sans menu quand ils voient votre site sur google ou autre, il recharge la frame principale si il ne la détecte pas  :)


Oui sauf que c'est complètement con :non:
 
Parce qu'un visiteurs qui arrive sur une page de ton site depuis un moteur de recherche veut normalement voir cette page et pas une autre. Or avec ton super code js, il retourne systématiquement sur l'index qui charge les frames. Ça soulève encore une fois le problème des frames qui vont entraîner le chargement des pages par défaut et non pas de la page que la personne voulait voir.
 
Il serait donc plus judicieux de préciser ta redirection avec par exemple le code suivant :
 

Code :
  1. <script type="text/javascript">
  2. if (parent.frames.length==0) parent.location.href="index.htm?from=laPageActuelle"
  3. </script>


 
Ta page "principale" recevrait donc en paramètre l'identifiant de la page que la personne était venu voir initialement. Il est donc possible ensuite de changer dynamiquement la page chargée dans la frame en fonction de ce paramètre. Avec du côté serveur style php ou alors avec du côté client comme js.
 
Je vois une seconde solution en php qui consisterait à exploiter le référant pour y trouver quelle page la personne était venu voir.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed