Salut,
Je compte bidouiller quelques pages en XHTML 1.1 sans pour autant me rendre incompatible avec différentes versions d'IE. Du coup, j'ai fait un code répondant à ces exigences... mais au passage, ben, je me suis passé des commentaires conditionnels via PHP (parce que si je peux me passer de code spécial M$croft, je préfère).
Ma question est de savoir si ce que j'ai fait convient et si, ce n'est pas le cas, pourquoi ?
-> On ne parle que des commentaires conditionnels sans évoquer cette version PHP, quelle en est la raison ?
Ah! puis si vous voyez de quoi parfaire ce code, je suis tout ouïe... Merci.
exemple de css associé :
Je compte bidouiller quelques pages en XHTML 1.1 sans pour autant me rendre incompatible avec différentes versions d'IE. Du coup, j'ai fait un code répondant à ces exigences... mais au passage, ben, je me suis passé des commentaires conditionnels via PHP (parce que si je peux me passer de code spécial M$croft, je préfère).
Ma question est de savoir si ce que j'ai fait convient et si, ce n'est pas le cas, pourquoi ?
-> On ne parle que des commentaires conditionnels sans évoquer cette version PHP, quelle en est la raison ?
Ah! puis si vous voyez de quoi parfaire ce code, je suis tout ouïe... Merci.
<?php
ob_start("ob_gzhandler");
$test = stristr($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml");
if($test)
{
header("content-type: application/xhtml+xml; charset=utf-8");
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'."\n";
}
else
{
header("content-type: text/html; charset=utf-8");
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n";
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"<?php if(!$test) echo ' lang="fr"'; ?>>
<head>
<meta http-equiv="content-type" content="<?php echo $test ? 'application/xhtml+xml' : 'text/html'; ?>; charset=utf-8" />
<title>Page XHTML 1.1</title>
<style type="text/css"><?php echo $test ? '<![CDATA['."\n" : '/*<![CDATA[*/'."\n"; ?>
@import url('style.css.php');
<?php
$agent = getenv("HTTP_USER_AGENT");
if(ereg("MSIE 7", $agent) && !ereg("Opera", $agent))
{
echo "\t\t\t@import url('styleIE7.css.php');\n";
}
elseif(ereg("MSIE 6", $agent) && !ereg("Opera", $agent))
{
echo "\t\t\t@import url('styleIE6.css.php');\n";
}
elseif(ereg("MSIE 5.5", $agent) && !ereg("Opera", $agent))
{
echo "\t\t\t@import url('styleIE5_5.css.php');\n";
}
elseif(ereg("MSIE 5.0", $agent) && !ereg("Opera", $agent))
{
echo "\t\t\t@import url('styleIE5.css.php');\n";
}
?>
<?php echo $test ? ']]>' : '/*]]>*/'; ?></style>
<script type="text/javascript" src="script.js.php"></script>
</head>
<body>
<p id="nojava">test</p>
</body>
</html>
exemple de css associé :
<?php
ob_start("ob_gzhandler");
header("content-type: text/css; charset=utf-8");
?>
@media screen, projection
{
body
{
background-color: #FFF;
color: #000;
font-size: 100%;
}
p
{
font-size: 1em;
color: red;
}
}
), tu vas récolter la feuille de style normale ainsi que celle dédiée à IE5 lors de l'enregistrement de la page... Le problème ne se pose alors que si tu changes de navigateur en cours de route, chose qui est intéressante pour nous qui développons mais peu commune pour l'utilisateur lambda... Néanmoins, bien que ce cas ne me semble plausible que pour un utilisateur qui choisit de consulter la page hors connection et sur un navigateur différent de celui utilisé pour l'enregistrement, c'est une chose dont il faut avoir conscience... (ce n'était pas mon cas jusqu'à ce que tu en parles) Celà dit, rien ne l'empêche de réenregistrer la page sur ce second navigateur. (à idée saugrenue, réponse saugrenue)
Si le header est supprimé, je pense que si mais si ce n'est que modifié, il devrait récupérer la feuille de style adaptée...
Si le navigateur ne peut être déterminé, une feuille de style spéciale IE n'apparaîtrait jamais... Je ne suis pas sûr et suppose qu'il y a d'autres manières de repérer le browser mais quelqu'un qui ferait cela irait certainement jusqu'au bout de son acte et se retrouverait vite contraint d'ôter la présentation pour pouvoir lire le texte correctement...
Oui, pourquoi pas ! En plus d'être parano, ça leur fera les pieds...