Bonjour
J'aimerai votre avis sur une technique que dont j'ai eu l'idée en lisant un commentaire sur un forum lorsque je faisait une recherche sur le net. D'ailleurs, ça faisait longtemps que j'avais envie de trouver un moyen pour la rendre possible. Je pense aussi que cette technique, du moins l'idée, n'est pas nouvelle et je ne pense pas avoir inventé quelque chose.
Note : lisez tout le post avant de vous enerver
Cette technique consiste à détecter le navigateur grâce à PHP et à envoyer une feuille de style spécifique au navigateur. Le but est d'utiliser des propriétés non valides sans rendre la feuille de style non valide. L'avantage est que ces propriétés non valides que l'on veut utiliser ne sont visibles qu'aux navigateurs qui les supportent.
Par exemple : je veux utiliser moz-border-radius. Il s'agit là d'une propriété qui teste border-radius, une propriété en préparation dans CSS3 me semble-t-il. Or moz-border-radius est une propriété propriétaire du moteur gecko, donc invalide.
J'utilise le code PHP suivant :
Si le navigateur utilise le moteur gecko, on inclut une 2e feuille de style contenant les propriétés invalides. Si le navigateur utilise un autre moteur que gecko : on affiche rien.
Ma question est justement là : j'ai attentivement lu plein de tutoriels sur AlsacréationS et j'ai bien saisit la philosophie du web : proposer aux utilisateurs un site qu'ils peuvent voir quelque soit le matériel utilisé. Je me demande donc si c'est correct de faire ça. N'est-ce pas une manière bête et méchante de contourner la validation ?
Personnellement, je pense que non. Puis que l'on applique des effets à du matériel spécifique donc ceux n'utilisant pas ledit matériel spécifique ne peuvent de toute façon pas afficher les effets souhaités et ne sont pas perturbés par des propriétés invalides que leur matériel ne saurait interpréter.
Une précision : par cette technique, je souhaite uniquement appliquer des effets gadgets/décoratifs comme le moz-border-radius. Je ne souhaite pas appliquer des propriétés css nécéssaires à la consultation du document.
Notez que cela peut être une alternative intéressante aux hacks css qui rendent souvent eux-aussi les css invalides parce que l'on peut bien entendu rajouter des conditions PHP à ce code pour appliquer une css à d'autres moeteurs que gecko. Ceci permetterait de corriger d'éventuels bugs de navigateurs n'ayant pas de systèmes de commentaires conditionnels comme IE.
Justement, je pense qu'il ne sert à rien d'utiliser ce code pour IE. Pour ce dernier, la solution la plus fiable à mon avis reste les commentaires conditionnels...
Alors, qu'en pensez-vous :
- Pour l'utilisation de propriétés invalides ?
- Pour corriger d'éventuels bugs de navigateurs ?
Merci d'avance !
PS : ne rigolez pas en voyant les commentaires dans le code PHP. Je sais c'est un petit code, mais je préfère le signer et le mettre en GPL.
Modifié par deejay-bee (07 Aug 2007 - 14:22)
J'aimerai votre avis sur une technique que dont j'ai eu l'idée en lisant un commentaire sur un forum lorsque je faisait une recherche sur le net. D'ailleurs, ça faisait longtemps que j'avais envie de trouver un moyen pour la rendre possible. Je pense aussi que cette technique, du moins l'idée, n'est pas nouvelle et je ne pense pas avoir inventé quelque chose.
Note : lisez tout le post avant de vous enerver
Cette technique consiste à détecter le navigateur grâce à PHP et à envoyer une feuille de style spécifique au navigateur. Le but est d'utiliser des propriétés non valides sans rendre la feuille de style non valide. L'avantage est que ces propriétés non valides que l'on veut utiliser ne sont visibles qu'aux navigateurs qui les supportent.
Par exemple : je veux utiliser moz-border-radius. Il s'agit là d'une propriété qui teste border-radius, une propriété en préparation dans CSS3 me semble-t-il. Or moz-border-radius est une propriété propriétaire du moteur gecko, donc invalide.
J'utilise le code PHP suivant :
<?php
// détection des navigateurs et affichage du css spécifique
// code by deejay-bee
// licence : GPL
// don't remove this tag
if (ereg("Gecko", $_SERVER["HTTP_USER_AGENT"]))
{
echo " <link rel=\"stylesheet\" media=\"screen\" type=\"text/css\" href=\"styles/geckos-only.css\" />
";
}
else
{
echo "";
}
?>
Si le navigateur utilise le moteur gecko, on inclut une 2e feuille de style contenant les propriétés invalides. Si le navigateur utilise un autre moteur que gecko : on affiche rien.
Ma question est justement là : j'ai attentivement lu plein de tutoriels sur AlsacréationS et j'ai bien saisit la philosophie du web : proposer aux utilisateurs un site qu'ils peuvent voir quelque soit le matériel utilisé. Je me demande donc si c'est correct de faire ça. N'est-ce pas une manière bête et méchante de contourner la validation ?
Personnellement, je pense que non. Puis que l'on applique des effets à du matériel spécifique donc ceux n'utilisant pas ledit matériel spécifique ne peuvent de toute façon pas afficher les effets souhaités et ne sont pas perturbés par des propriétés invalides que leur matériel ne saurait interpréter.
Une précision : par cette technique, je souhaite uniquement appliquer des effets gadgets/décoratifs comme le moz-border-radius. Je ne souhaite pas appliquer des propriétés css nécéssaires à la consultation du document.
Notez que cela peut être une alternative intéressante aux hacks css qui rendent souvent eux-aussi les css invalides parce que l'on peut bien entendu rajouter des conditions PHP à ce code pour appliquer une css à d'autres moeteurs que gecko. Ceci permetterait de corriger d'éventuels bugs de navigateurs n'ayant pas de systèmes de commentaires conditionnels comme IE.
Justement, je pense qu'il ne sert à rien d'utiliser ce code pour IE. Pour ce dernier, la solution la plus fiable à mon avis reste les commentaires conditionnels...
Alors, qu'en pensez-vous :
- Pour l'utilisation de propriétés invalides ?
- Pour corriger d'éventuels bugs de navigateurs ?
Merci d'avance !
PS : ne rigolez pas en voyant les commentaires dans le code PHP. Je sais c'est un petit code, mais je préfère le signer et le mettre en GPL.
Modifié par deejay-bee (07 Aug 2007 - 14:22)