Forum-webmaster
Technique - programmation => Javascript / DOM / Ajax => Message commencé par: JoneSmice le le 14-05-2005 a 14:03:04

Titre: Ouvrir deux liens dans deux frames différentes
Posté par: JoneSmice le le 14-05-2005 a 14:03:04

Bonjour à vous...

Il y a un code, qui n'a pourtant pas l'air très compliqué, qui me fait galérer depuis quelques temps...

J'ai deux frames A et B.
J'ai un lien dans la frame A et je voudrais que lorsque je clique dessus, ça ouvre le lien dans la frame A ET un autre dans la frame B en même temps...

Comment faire?

Je vous remercie...

Titre: Re:Ouvrir deux liens dans deux frames différentes
Posté par: lab_siteweb le le 14-05-2005 a 21:04:22

Salut,

je ne pense pas que tu puisses faire ça uniquement en HTML, mais ça doit sûrement être possible en Javascript avec un attribut onclick sur ta balise <a>.

Titre: Re:Ouvrir deux liens dans deux frames différentes
Posté par: jb_gfx le le 14-05-2005 a 22:16:07

Si tu permet que je te donne mon avis : les frames c'est dépassé, inaccessible, mal pour le référencement et l'utilisateur, etc... bref c'est beurk!

Mais bon si tu tiens vraiment à les utiliser, voilà une méthode simple et propre pour changer 2 liens à la fois avec un peu de js.
Code à placer dans la partie head de ta page HTML (la Frame qui contiendra ton lien double) :


Code:

<script type="text/javascript" src="scripts/changeframes.js"></script>

<script type="text/javascript">
<!--
window.onload = function runScripts()
{
changeFrames() ;
}
-->
</script>


Tes liens HTML (à placer aussi dans ta page HTML, la même où tu appelle le script) :


Code:

<a id="lien_accueil" href="menu-accueil.html" target="menuFrame" title="Présentation de la boutique">Accueil</a>
<a id="lien_catalogue" href="menu-catalogue.html" target="menuFrame" title="Catalogue de produits">Catalogue</a>


Javascript, le fichier changeframes.js :


Code:

function changeFrames ()
{
var accueil = document.getElementById('lien_accueil');
accueil.onclick = function ()
{
self.location='accueil.html';
}

var catalogue = document.getElementById('lien_catalogue');
catalogue.onclick = function ()
{
self.location='catalogue.html' ;
}
}


Comme tu peux voir, l'une des 2 frames est changé par ton lien HTML (comportement normal) la 2eme frame est elle changée par le script js. Ce qui fait que pour les utilisateurs qui n'ont pas javascript, au moins une des deux frames sera quand même changée. A toi de faire en sorte que ce soit la plus importante des deux.

Pour tes liens il suffit de leur attribuer un id :


Code:

<a id="lien_accueil" ...


Rappelle toi que l'id doit être UNIQUE!

Ensuite tu peux avoir autant de liens que tu veux il te suffit de duspliquer le bout de javascript et de changer l'id, le nom des variables et les cibles...

Dans le script d'exemple je change la frame ou se trouve le lien (self) mais si tu veux changer une autre frame il te suffit de préciser le nom que tu lui a attribué, différents exemples :


Code:

parent.maFrame.location='catalogue.html' ;
self.location='catalogue.html'


Voilà, ce script fonctionne sur IE 5, 6, Mac, Safari, Opera, FireFox, j'en passe et des meilleurs ;)


Note finale, tu peux changer autant de frames que tu veux avec un seul lien :


Code:

var catalogue = document.getElementById('lien_catalogue');
catalogue.onclick = function ()
{
parent.maFrame1.location='page1.html' ;
parent.maFrame2.location='page2.html' ;
parent.maFrame3.location='page3.html' ;
parent.maFrame4.location='page4.html' ;
}

Titre: Re:Ouvrir deux liens dans deux frames différentes
Posté par: JoneSmice le le 15-05-2005 a 15:34:39

Merci beaucoup jb_gfx pour ta réponse: ça marche enfin...

Le temps de chargeemnt des pages va nettement s'améliorer...

Merci encore!

Titre: Re:Ouvrir deux liens dans deux frames différentes
Posté par: jb_gfx le le 16-05-2005 a 00:29:36

Citation de: JoneSmice le le 15-05-2005 a 15:34:39
Le temps de chargeemnt des pages va nettement s'améliorer...


C'est assez illusoire en réalité. Car dans tes pages HTML ce qui est vraiment long à charger ce sont les images, les parties textes sont quand à elles trés rapide à lire. Donc une fois la première page chargée et que tes images sont dans le cache les autres pages se chargeront trés vite (sauf les parties où tu chargera de nouvelles images, mais dans ce cas même avec des frames c'est pareil).

donc frame ou pas frame ça ne change pas vraiment le temps de chargement, tout au plus l'illusion que c'est plus rapide car une partie reste affiché le temps que charge le nouveau contenu.

Si en plus tu utilise une feuille de style pour la mise en forme de ton site l'avantage reviens au pages classiques.

Par contre les frames posent de serieux problèmes d'accessibilité et sont plus difficiles à référencer. Et pour l'utilisateur elles sont génantes en plusieurs points :

- il est diffficile de mettre une page en favori (on met la frame parente en favori mais pas le contenu qu'on souhaite).

- les titres de tes pages ne changent pas selon le contenu, cela rend la navigation moins intuitive tout en nuisant au référencement.

- tes frames peuvent être déframés par les moteurs de recherches, dans ce cas un visiteur peut tomber sur le contenu d'une de tes frames sans savoir quel site il visite.

Et d'autres, mais j'ai la flemme de lister toutes les raisons qui font que les frames c'est dépassé et il n'y a aucun interet à les ressortir du placard poussiéreux dans lequel on les a rangé. ;)


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.