Forum-webmaster
Technique - programmation => HTML / CSS / XHTML => Message commencé par: noemalzieu le le 23-01-2011 a 19:59:49

Titre: What after frames?
Posté par: noemalzieu le le 23-01-2011 a 19:59:49

Bonjour,
cela fait un moment que les frames ne sont plus autorisées (XHTML Strict) et je me posais la question suivante: que faire pour les remplacer?
Imaginons que j'aie un site internet avec un menu en haut qui permet par exemple d'acceder à mon CV, un blog, des photos, etc, etc

Je voudrais faire comme avec des frames: une frame en haut servirait de menu, le reste servirait d'endroit pour charger la page.

Je suis à l'aise avec les méthodes ajax mais le problème est que mon blog étant déjà tout fait, sous wordpress, si j'ai une div header avec le menu en haut et une div pour le contenu, charger la page du blog dans le contenu marchera mais dès que l'on cliquera sur un des liens du blog on perdra le menu qui est en haut (avec les frames le contenu du lien était automatiquement chargé dans la frame) - il faudrait que chaque lien soit modifié en un appel ajax??

Utiliser les iframes ne me plaît pas trop surtout à cause de la difficulté entre différents navigateurs à changer leur contenu
Les balises objects ne permettent pas je crois de changer le contenu

Donc voilà, j'ai toujours détesté les frames, mais aujourd'hui je me trouve dans une situation ou je ne sais pas comment faire autrement.
Avez-vous une idée?

Merci d'avance pour votre réponse, en espérant que ce ne soit pas compliqué et que ce soit juste moi qui ne voie pas plus loin que le bout de mon nez

Titre: Re:What after frames?
Posté par: Wolf18 le le 23-01-2011 a 21:07:43

Bonjour, les frames ont été remplacées depuis déjà bien longtemps sur beaucoup de sites Internet.

Personnellement j'ai opté pour la solution que je trouve la plus simple et très efficace. Je mets par exemple mon menu du haut dans un fichier à part, que je nomme menu_haut.php. Sur la page principale je fais appel à cette partie grâce à la fonction php include !



Code:
<?php include("menu_haut.php"); ?>


Il suffit de faire cela avec toutes les parties qui reviennent sur chaque page. Le truc c'est qu'il faut le faire dès le début car sinon c'est un gros chantier.

Bon courage.

Titre: Re:What after frames?
Posté par: noemalzieu le le 23-01-2011 a 21:55:30

Désolé, j'ai du mal m'exprimer,
je n'en ai même pas parlé dans mon post car la méthode include marche très bien mais le menu est rechargé à chaque fois, je veux que ce soit dynamique (à la ajax, ou même comme les frames qui ne chargeait que la partie modifiée)

Titre: Re:What after frames?
Posté par: MarvinLeRouge le le 24-01-2011 a 09:50:27

Salut,

Si on a tout fait pour oyublier les frames, il y a une (et même plusieurs) raisons. Notamment le fait que ça dissociait les différentes parties de la page, rendant la définition de l'entité "page" difficile, notamment pour les moteurs de recherche et les personnes ayant des problèmes d'accessibilité.
Tu es en train de demander comment tu pourrais faire pour recréer un problème qu'on a mis des années à éradiquer :o

Il vaut nettement mieux utiliser des pages normales, avec des menus normaux (en utilisant éventuellement des includes, qui ne sont pas du tout des frames, puisque ça se passe côté serveur), et éviter le rechargement de certaines parties de la page, en ajax (mais pas tout, sinon l'internaute ne comprendra plus).

Titre: Re:What after frames?
Posté par: Wolf18 le le 24-01-2011 a 20:20:17

Tout à fait d'accord avec Marvin... ::)

Titre: Re:What after frames?
Posté par: noemalzieu le le 28-01-2011 a 09:10:25

Je sais déjà tout ça et je suis tout à fait d'accord. Mais par exemple j'ai rencontré un nouveau problème de ce type, je développe pour une entreprise un blog qui permet d'être alimenté par des emails au format HTML.
Si je crée une DIV dans laquelle j'insère l'email reçu au sein de la page du blog, si les balises HTML du mail incluaient une image de fond, toute ma page sera altérée puisque le mail et le reste de la page cohabitent! Ca ne rend vraiment pas bien, et justement, la c'est tout l'intéret de pouvoir considérer la page et l'email comme deux pages completement dissociées. Avec une frame, évidemment ca marche très bien.

Et là, quelle alternative?

Titre: Re:What after frames?
Posté par: MarvinLeRouge le le 28-01-2011 a 10:23:30

Je ne suis pas sûr de comprendre (j'ai pas encore ma dose nominale de café).
Si le but est juste de définir les limites d'un contenu, une simple définition claire des dimensions avec un petit overflow auto suffit : tu auras un contenu dans une zone délimitée, avec des ascenseurs en cas de besoin.

Titre: Re:What after frames?
Posté par: noemalzieu le le 28-01-2011 a 11:19:38

Oui mais en gros, ça ne suffit pas de mettre un overflow auto.
J'ai une div dans laquelle j'affiche le contenu HTML d'un post qui a été envoyé par email.

Une personne écrit son mail et l'envoie à une adresse donnée. Ce mail étant au format HTML, si la personne a décidé de mettre une image particulière en background image, lorsque j'affiche le contenu HTML du mail dans ma div, cela ajoute cette propriété de background image à ma page toute entière, ce qui fait que même ce qui est EN DEHORS de la div considérée, a tout d'un coup cette image en background.

Avec une frame, comme ce qui est à l'intérieur ne peut pas intéragir avec ce qui est à l'extérieur, aucun problème de ce type…

Je me suis mieux exprimé?

Titre: Re:What after frames?
Posté par: MarvinLeRouge le le 29-01-2011 a 20:04:16

Je comprends ce que tu veux dire, mais en l'occurrence, je pense que tu prends la chose du mauvais côté, je m'explique :
a) si c'est un mail qu'une personne a composé en html, elle n'a probablement pas ou peu eu accès au body, et ses styles sont forcément inline (vu que c'est quasiment le seul truc qui marche pour l'instant avec les emails).
b) rien ne t'empêche d'extraire le contenu de la balise body et de le coller dans un div conteneur
c) et si tu veux pousser le raisonnement, tu peux également récupérer les attributs de styles principaux qui peuvent être collés sur cette balise body (du genre acolor, vcolor et autres joyeusetés), et les ré-injecter sur la balise conteneur (ou sur un div#mailBody par exemple)

J'ai l'impression que tu vois trop l'aspect "je suis sûr que je ne peux pas donc je cherche à reproduire des frames" et pas aspect l'idée "je veux juste réinjecter du contenu existant en repiquant ses styles, comment pourrais-je m'y prendre".


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