Contourner une incompatibilité FF IE

Fermé
lucdor Messages postés 25 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 1 juin 2007 - 1 juin 2007 à 14:57
lucdor Messages postés 25 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 1 juin 2007 - 1 juin 2007 à 15:24
Bonjour
novice en programmation, je me demande s'il est envisageable qu'à l'ouverture de la 1ère page d'un site une fonction permette le choix d' affichage d'une page ou d'une autre en fonction du navigateur détecté.
exemple
si IE : bidule.html
si FF : machin.html

dans le cas où cela serait possible quelle est la solution la plus efficace et facile à mettre en oeuvre.

ceci pour éviter les problèmes de compatibilité graphique.

Merci d'avance pour vos réponses.

2 réponses

babytux Messages postés 45 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 14 juin 2007 14
1 juin 2007 à 15:06
hello,

tu à +- 2 solutions...

sois tu fait la detection du coté client -->javascript par exemple
attention toute fois si les client desactive le javascript....


sinon coté serveur -->php par exemple
la variable $_SERVER te permet de connaitre le navigateur...


sinon la 3nd solutions qui me semble la plus réaliste -->tu fait 1 seul site pour les 2navigateur....

je m'explique: imagine que la personne change l'useragent tu fait quoi? tu dit à oui c'est ie donc une page moche? dans le cas d'un navigateur peu connu, par exemple konqueror tu fait quoi? firefox ou ie?

et pour le référencement tu fait quoi? tu crée encore une page pour les bot? <-- c'est interdit par pas mal de moteur...

et puis le html c'est quand meme pas 2 mondes si distincte que sa....


@+
Beks:P
0
lucdor Messages postés 25 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 1 juin 2007
1 juin 2007 à 15:24
bonjour
merci pour ta réponse
le seul problème que je rencontre c'est par rapport à la gestion de le transparence des images .png du site_non-gérée par IE.
toutefois je suis d'accord avec toi une page par navigateur ce n'est pas réaliste .
l'idée que j'avais c'était de rendre visible l'animation ( menu ruban avec des images .png ) pour tous les navigateurs mais de proposer un menu fixe pour IE mais pas de modifier autre chose.
j'ai réussi à récupérer une astuce qui permet rendre transparente mes images .png sous IE à partir de la version 5.5 mais le menu ruban ne déroule plus.
je me permet de te mettre les 2 codes JS qui tournent très bien sous FF.

le premier rend les images transparentes sous IE


Correctly handle PNG transparency in Win IE 5.5 & 6.
http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.

Use in <HEAD> with DEFER keyword wrapped in conditional comments:
<!--[if lt IE 7]>
<script defer type="text/javascript" src="pngfix.js"></script>
<![endif]-->

*/

var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

if ((version >= 5.5) && (document.body.filters))
{
for(var i=0; i<document.images.length; i++)
{
var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
{
var imgID = (img.id) ? "id='" + img.id + "' " : ""
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
var imgStyle = "display:inline-block;" + img.style.cssText
if (img.align == "left") imgStyle = "float:left;" + imgStyle
if (img.align == "right") imgStyle = "float:right;" + imgStyle
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
img.outerHTML = strNewHTML
i = i-1
}
}
}
le deuxième c'est celui du menu déroulant


// Fichier JavaScript

var angle=0;
var timer;
var FlgDefilement = "Non";

function Affichage ()
{
for(i=1;i<13;i++)
{
var Gauche = 180+300*(Math.cos(angle+i*Math.PI/6));//emplacement du menu déroulant par rapport à l'image de fond//
document.getElementById("i"+i).style.left=Gauche+"px";
var Hauteur = 80+50*(Math.sin(angle+i*Math.PI/6))+document.getElementById("i"+i).width/2;
document.getElementById("i"+i).style.top=Hauteur+"px";
agl=angle+i*Math.PI/6;
document.getElementById("i"+i).width=45*(Math.sin(agl))+60;//taille des icones//
document.getElementById("i"+i).style.zIndex=200*(Math.sin(agl))+400;
document.getElementById("i"+i).style.opacity=(Math.sin(agl)+1)*0.50;
document.getElementById("i"+i).style.filter="alpha(opacity="+(Math.sin(agl)+1)*200+")";

}
}

function Defilement()
{
switch (FlgDefilement)//vitesse de défilement//
{
case "Droite" :
angle=angle-0.015;
break;
case "Gauche" :
angle=angle+0.015;
break;
default :
angle=angle;
}
Affichage ();
}

function DefilementDroite()
{
if (FlgDefilement!="Droite")
{
FlgDefilement="Droite";
timer=setInterval("Defilement()",20);
}
}

function DefilementGauche()
{
if (FlgDefilement!="Gauche")
{
FlgDefilement="Gauche";
timer=setInterval("Defilement()",20);
}
}

function ArretDefilement()
{
clearInterval(timer);
FlgDefilement="Non";
}


}

si quelqu' un voit ce qui ne va pas, je serais heureux de tester sa solution parce que pour l'instant je rame.
Merci d'avance pour ta réponse
0