Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
774 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  (Novice) Frameset et incompatibilité IE toutes versions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(Novice) Frameset et incompatibilité IE toutes versions

n°1894768
CaseyAnder​s
Posté le 13-06-2009 à 18:14:56  profilanswer
 

Bonjour, je suis novice en édition HTML et rencontre un problème de compatibilité IE que je n'arrive pas à comprendre ni contourner.  
 
Lorsque j'ouvre "index.html" (voir ci-dessous) avec Firefox, Chrome, Opera, Safari, etc. j'ai bien 3 colonnes comme prévu: la première et troisième en rouge, celle du milieu en blanc:
http://x/download/mf.png
 
Mais avec IE 6 (et IE7 et IE8 (!!!) testés depuis browsershots.org) je n'ai que la colonne de gauche qui est rouge, et la colonne de droite est blanche:
http://www.x/download/ie6.png
 
Le problème semble apparaître suite à l'utilisation de la commande frameset, que j'utilise beaucoup dans le site (beaucoup plus intensément que dans le code ci-dessous).
 
Je n'ai aucune idée comment faire pour que IE affiche correctement les frameset.
(le recours aux frameset est nécessaire pour permettre le chargement de certaines parties du site à l'aide de javascript, du genre parent.frames.menulist.location.href="menu.html").
 
Quelqu'un a-t-il une idée comment rendre IE compatible sans tout chambouler?
(le site a été développé sur la base d'une compatibilité avec Chrome et est terminé mise à part ce problème qui casse toute la mise en page)
 
Pour cerner le problème, j'ai simplifié au maximum le code tout en reproduisant le bug comme dans les 3 fichiers ci-dessous:
 
==============================================
index.html:
==============================================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
 
<frameset cols="*,1000,*" frameborder="0" border="0">  
 
<frame src="bg.html">  
 
<frameset rows="*" frameborder="0" border="0">  
<frame src="main.html" >
</frameset>
 
<frame src="bg.html">
 
</frameset>
</html>


Dans le site final, il y a plusieurs frames en ligne dans l'instruction frameset rows="*" frameborder="0" border="0">, justifiant la présence de ce frameset (même si ici on pourrait l'enlever - mais alors le problème ne se produit plus).  
 
==============================================
bg.html:
==============================================

<html>
<body bgcolor="#FF0000">
</body>
</html>


==============================================
main.html:
==============================================

<html>
<body>
 
bla bla bla
 
</body>
</html>


Message édité par CaseyAnders le 25-06-2009 à 10:07:54
mood
Publicité
Posté le 13-06-2009 à 18:14:56  profilanswer
 

n°1894856
Corebreake​r
Posté le 14-06-2009 à 08:15:02  profilanswer
 

==============================================
index.html:
==============================================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
 
<frameset cols="*,100,*" frameborder="0" border="0">  
 
<frame src="bg.html">  
<frame src="middle.html" >
<frame src="bg.html">  
 
</frameset>
 
</html>


 
==============================================
middle.html:
==============================================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
 
<frameset rows="*" frameborder="0" border="0">  
<frame src="main.html" >
</frameset>
 
</html>

n°1894857
Corebreake​r
Posté le 14-06-2009 à 08:19:52  profilanswer
 

Si utiliser trop de frame alourdi le site et que tu vois que c'est lent, essaie d'utiliser AJAX, oublie les IFRAME sous IE7 et IE8 sous Windows Vista, les IFRAME sont hyper-controlées et sont donc souvent désactivées.

n°1894862
CaseyAnder​s
Posté le 14-06-2009 à 09:19:44  profilanswer
 

Bonjour,
Merci pour la réponse.

  • La lenteur n'est pas un problème.
  • La solution ci-dessus n'est pas viable, car même si elle fonctionne la page d'accueil de site serait découpée en plus de 20 fichiers. D'autre part (cf ci-dessous), je pense que le problème est ailleurs.
  • Au sujet des IFRAME, de toute façon je ne crois pas les utiliser.
  • Etant novice, je n'ai aucune idée de ce qu'est AJAX.


Pour essayer de cerner au mieux le problème, j'ai fait des tests supplémentaires avec l'exemple suivant - plus complexe (voir code ci-dessous) - qui lui fonctionne correctement sous IE6:
http://x/download/ie6-2.png
 
 
Où peut bien être le problème si mon fichier hyper-simple a un bug, et cet exemple ci-dessous beaucoup plus complexe est affiché correctement par IE6 ??? !!!
 
 
Autre piste étrange: si dans l'exemple simple de mon premier post j'efface les fichiers "bg.html" et "main.html", on voit que IE ne vas même pas essayer d'ouvrir le fichier "bg.html" de la troisième colonne à droite:
http://x/download/ie6-3.png
Ce n'est pas le cas des autres navigateurs qui eux essaient d'ouvrir la page de droite (par exemple Chrome ci-dessous):
http://x/download/gc-1.png
 
 
 
============================================
Fichier principal de l'exemple plus complexe
============================================

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
 
</HEAD><FRAMESET cols="*,300,*" frameborder="0" border="0">
 
<FRAME src="bg1.htm">
 
<FRAMESET rows="44,44,*" frameborder="0" border="0">
 
  <FRAMESET cols="*,50" frameborder="0" border="0">
    <FRAME src="bg2.htm" scrolling="no">
    <FRAME src="bg3.htm" scrolling="no">
  </FRAMESET>
 
  <FRAMESET cols="50,*" frameborder="0" border="0">
    <FRAME src="bg4.htm" scrolling="no">
    <FRAME src="bg5.htm" scrolling="no">
  </FRAMESET>
 
  <FRAMESET cols="200,*" frameborder="0" border="0">
    <FRAMESET rows="50,*" frameborder="0" border="0">
      <FRAME src="bg6.htm" border="0">
      <FRAME src="bg7.htm" scrolling="auto" >
    </FRAMESET>
    <FRAME src="bg8.htm" scrolling="auto" >
  </FRAMESET>
</FRAMESET>
 
<FRAME src="bg1.htm">
 
</FRAMESET></HTML>


============================================
Fichiers "bgX.htm", X=1, ..., 8
============================================

<HTML>
<body bgcolor="#FF0000">  
</BODY
></HTML>
 
<HTML>
<body bgcolor="#880000">  
aaaaaaaaa
</BODY
></HTML>
 
<HTML>
<body bgcolor="#FF00FF">  
bb bbbbbb bbbbb
</BODY
></HTML>
 
<HTML>
<body bgcolor="#FFFF00">  
ccccccc cc c c c c c
</BODY
></HTML>
 
<HTML>
<body bgcolor="#0000FF">  
dddddddd dddd d dd  
</BODY
></HTML>
 
<HTML>
<body bgcolor="#888888">  
eee e  e e ee  e e  
</BODY
></HTML>
 
<HTML>
<body bgcolor="#00FF00">  
fff ff f f f ff f
</BODY
></HTML>
 
<HTML>
<body bgcolor="#77FFAA">  
gggggg g g gg g  gg
</BODY
></HTML>


Message édité par CaseyAnders le 25-06-2009 à 10:09:02
n°1894865
Corebreake​r
Posté le 14-06-2009 à 10:22:24  profilanswer
 

Ok.
AJAX permet de faire ce que tu veux ici mais sans frames, donc encore moins de fichiers si ça fait partie de tes soucis. (car au final tu n'a qu'un fichier HTML: le fichier index.html)
AJAX permet en faire de modifier ou de composer des morceaux de ta page. Tu peux afficher ou modifier un endroit de la page sans toucher au reste de la page.
 
Je me suis aperçu du non chargement sur la frame de droite, un click droit puis propriétés indique index.html
 
Et j'ai trouvé!
Je sais pourquoi l'exemple complexe fonctionne, il y a une différence.
L'exemple simple a une balise frameset qui contient une seule frame, alors que dans l'exemple complexe, chak balise frameset contient toujours au moins 2 éléments (2 frames ou alors 1 frame et 1 frameset).
Apparemment la balise frameset n'aime pas quand il y a qu'un seul élément.
Ajoute simplement une frame à ton frameset imbriqué (de nivo 2) sur 1er exemple, et ça marchera.
 
Et puis j'ai découvert un problème qui n'apparait ici; s'il y a des frameset imbriquer, d'un nivo d'imbrication à l'autre il fo alterner l'alignement:
<frameset cols="..."><frameset rows="...">...</frameset>...</frameset>
ou
<frameset rows="..."><frameset cols="...">...</frameset>...</frameset>  
mais pas
<frameset cols="..."><frameset cols="...">...</frameset>...</frameset>


Message édité par Corebreaker le 14-06-2009 à 10:25:12
n°1894868
CaseyAnder​s
Posté le 14-06-2009 à 10:50:31  profilanswer
 

RESOLU - 1'000 mercis!
En effet, le problème venait de fait qu'il n'y avait qu'une balise dans certains frameset. En ajoutant des frame de taille 0 cela corrige le problème (j'avais besoin d'un seul frame dans un frameset car j'avais un frameset en rows qui contenait un unique autre frameset en cols):

<frameset rows="0,*" frameborder="0" border="0">
<frame src="" scrolling="no">
<frame src="menu.html" scrolling="no">
</frameset>


... enfin, si je puis me permettre d'apporter une remarque depuis mon statut de novice, je trouve cela totalement hallucinant que IE, avec (encore) 65% des parts de marché, soit le seul navigateur affecté par ce problème a priori complètement basique depuis au moins la version 6 (datant de 2001) jusqu'à la dernière version 8 sortie il y a quelques mois... ou peut-être n'ais-je alors rien compris à la manière de coder en html...


Message édité par CaseyAnders le 14-06-2009 à 11:09:15
n°1894873
Corebreake​r
Posté le 14-06-2009 à 11:18:00  profilanswer
 

Bah c'est que Microsoft détient 65% des parts de marché des bugs.
 
Sinon est-ce vraiment un problème? Pour savoir il suffit d'aller sur le site de la W3C. La W3C est un consortium qui s'occupe entre autre de définir ce qui est légal en HTML. Après les navigateurs se doivent logiquement de suivre les standards, la réalité est autre chose. Mais normalement IE doit en principe suivre la W3C.
 
Et puis est-ce logique de mettre une seule frame dans un frameset, bah non, car autant ne pas utiliser un frameset si c'est pour mettre une seule frame.
 
Donc c'est un faux problème. Ou alors c'est un problème de conception et non pas de réalisation.
 
De tout cas, je te conseille de t'appuyer justement sur la W3C pour le HTML et ses amis. Que le navigateur ne suit pas le standard, ce n'est pas ton problème, en principe, s'il veut survivre, il se doit de suivre la W3C. Comme j'ai dis en principe IE le fais. Le problème que t'as eu n'est simplement qu'un problème d'implementation, mais si tu suis les recommandations de la W3C, tu seras certain de ne plus être confronté à ces petits soucis.

n°1894877
CaseyAnder​s
Posté le 14-06-2009 à 11:47:34  profilanswer
 

En effet le code html a pu être épuré des frames uniques... Merci!


Message édité par CaseyAnders le 14-06-2009 à 11:49:03

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  (Novice) Frameset et incompatibilité IE toutes versions

 

Sujets relatifs
Probleme spoiler sous IE mais pas sous FFScript javascript fonctionne / IE mais pas / Mozilla
Probleme d'affichage sur IE comparé à FFProbleme IE
Background image qui marche dans IE mais pas dans FFBackground image qui marche dans IE mais pas dans FF
[J2ME] RSA : incompatibilité d'algorithmeIncompatibilité composant Windows 2000 / XP
Probleme transparence sous IEProblème de bannière flash sous IE
Plus de sujets relatifs à : (Novice) Frameset et incompatibilité IE toutes versions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR