Aller au contenu

Commentaire conditionnel et IE Mac


MarvinLeRouge

Sujets conseillés

Mais non pas de javascript :wacko:

Certains hacks CSS permettent de masquer du contenu à IE 5 Mac.

Le plus connu d'entre eux a été créé par le même développeur qui a écrit IE 5 Mac (Tantek Celic)

p#tantek {
 voice-family: "\"}\""; /* parsing bug */
                        /* parsing bug */
 voice-family: inherit;
 color: #f00;
}

La règle sera appliquée par tous les navigateurs à l'exception de Netscape 4.x, Mac IE <=4.5, Win IE <=5.5 et Win Amaya 5.1 ;)

http://www.tantek.com/CSS/Examples/boxmodelhack.html

Lien vers le commentaire
Partager sur d’autres sites

L'utilisation des hacks est contre ma philosophie (oui j'ai écrit dans le bon ordre).

Je considère qu'utiliser un bug d'un browser pour corriger un autre bug est une aberration.

<{POST_SNAPBACK}>

Une abération certes, mais pas pire que la détection javascript (qui, elle, est une bien pire abération : ne marche que si javascript est activé (c'est à dire moins de 90% des internautes - voir au milieu de la page-), et en plus c'est beaucoup plus foireux que les hacks css, avec les navigateurs qui faussent l'identification et tout... :rolleyes:

:wacko:

Alors soit tu fais rien, soit un hack CSS, mais pas de détection javascript :nono:

Lien vers le commentaire
Partager sur d’autres sites

Salut,

:excl: ne pas confondre "hack" et "bug"

Ensuite, ce hack a été créé spécialement pour l'occasion par Tantek Celic (Monsieur Explorer Mac, qui a d'ailleurs quitté MS pour rejoindre le w3c :hourra:) afin de contrer les problèmes de modèles de boîtes.

En effet, pour la petite histoire, Microsoft tente d'imposer au web sa vision d'un certain modèle de boîte (soit dit en passant je préfère presque ce modèle au modèle standard.. aïe me taper pas dessus: pour une fois que je dis du bien de MS).

Donc ils ont demandé à Tantek de coder IE Mac en respectant un modèle non standard.

Et il l'a fait, mais a codé une parade (un vrai-faux bug au niveau du parseur).

Donc, revenons en à nos agneaux.

Dans ta CSS, tu mets dans l'ordre

  • 1ère déclaration qui ne marche qu'avec IE Mac
  • 2ème déclaration: la vraie, mais cachée à IE Mac via le Tantek's hack

Et comme le dit Xavier, évites à tout prix le javascript pour détecter les navigateurs, çà ne marche jamais, ce n'est pas sémantique, et si le JS est désactivé c'est la catastrophe ;)

Bon courage

PS: en plus, IE Mac et le javascript ne sont pas copains: j'en sais quelque chose -> je suis en ce moment même à fond dans un problème de javascript qui fonctionne aléatoirement avec ce navigateur :boude:

Lien vers le commentaire
Partager sur d’autres sites

Salut,

1) Je n'ai pas confondu hack et bug. J'ai dit qu'un hack est l'utilisation d'un bug, ce qui est vrai : le code que tu m'as montré contient bien les mots "parsing bug", non ?

2) "vrai/faux bug ? Comment ça, "vrai/faux" ? Ce bug de parsing a été sciemment installé dans le logiciel ?

3) "javascript, ce n'est pas sémantique". Quel rapport entre javascript et la sémantique ? Tu ne changes pas le code html de ta page, et ton appel javascript est bien déclaré : il n'y a donc aucun problème dans ta sémantique. Ceci dit, je préfère de toute façon ne pas avoir à détecter le navigateur DU TOUT (ou à la limite le faire par un commentaire conditionnel, qui est quand même à mon avis beaucoup plus propre qu'un hack, puisqu'il est clairement déclaré).

4) J'ai trouvé une modification du hack de Tantek par lui-même ici, expliquée et commentée par Doug Bowman ici, qui permet de montrer uniquement certaines règles à ie 5 mac.

Lien vers le commentaire
Partager sur d’autres sites

En effet, pour la petite histoire, Microsoft tente d'imposer au web sa vision d'un certain modèle de boîte (soit dit en passant je préfère presque ce modèle au modèle standard.. aïe me taper pas dessus: pour une fois que je dis du bien de MS).

<{POST_SNAPBACK}>

Je ne serais pas celle qui te taperais ; je préfère, moi-aussi, la logique appliquée, dans ce cas, par IE que la logique des standards.

J'utilise systématiquement * {-moz-box-sizing:border-box} tout en préférant pourtant coder standard.

Pas taper non plus. C'est lui-ki-la-dit !

Lien vers le commentaire
Partager sur d’autres sites

le code que tu m'as montré contient bien les mots "parsing bug", non ?

2) "vrai/faux bug ? Comment ça, "vrai/faux" ? Ce bug de parsing a été sciemment installé dans le logiciel ?

3) "javascript, ce n'est pas sémantique". Quel rapport entre javascript et la sémantique ? Tu ne changes pas le code html de ta page, et ton appel javascript est bien déclaré : il n'y a donc aucun problème dans ta sémantique. Ceci dit, je préfère de toute façon ne pas avoir à détecter le navigateur DU TOUT (ou à la limite le faire par un commentaire conditionnel, qui est quand même à mon avis beaucoup plus propre qu'un hack, puisqu'il est clairement déclaré).

4) J'ai trouvé une modification du hack de Tantek par lui-même ici, expliquée et commentée par Doug Bowman ici, qui permet de montrer uniquement certaines règles à ie 5 mac.

1) promis la prochaine fois, j'enlève les commentaires d'un code copié-collé que je suis allé chercher dans mes favoris pour te rendre service <_<

2) OUI c'est ce qu'il me semble avoir dit et je n'ai toujours pas changé d'avis. En parlant de Doug Bowman, c'est lui a demandé à Tantek Celic de créer ce faux bug.

3) le javascript et la sémantique, le rapport est bien simple: le javascript ne sert (théoriquement) qu'à apporter des add-ons non-indispensables à une page. Toi tu t'entêtes à vouloir parser les user-agent avec pour servir tes styles, libre à toi. Maintenant si tu as déjà la réponse à ta question, pourquoi la poses-tu ? :huh:

4) Google est un site extraordinaire

Je ne serais pas celle qui te taperais ; je préfère, moi-aussi, la logique appliquée, dans ce cas, par IE que la logique des standards.

J'utilise systématiquement * {-moz-box-sizing:border-box} tout en préférant pourtant coder standard.

Pas taper non plus. C'est lui-ki-la-dit !

Vouais, mais çà rend quoi sur les navigateurs KHTML ton code (invalide :P). Car eux respectent le modèle standard mais n'appliquent pas les hacks -moz qui sont propres aux navigateurs Gecko :unsure:

Maiheu, délatrice

Lien vers le commentaire
Partager sur d’autres sites

Bon, remettons les choses en place : je DISCUTE, j'exprime mon opinion, je ne t'agresse pas : je propose donc que nous fassions redescendre ensemble le ton de la conversation vers un niveau plus zen :) .

1) promis la prochaine fois, j'enlève les commentaires d'un code copié-collé que je suis allé chercher dans mes favoris pour te rendre service <_<

Ben pourquoi ? Je ne t'ai pas fait de reproche, je constatai simplement quelque chose qui semblait aller dans mon sens, c'est tout.

2) OUI c'est ce qu'il me semble avoir dit et je n'ai toujours pas changé d'avis. En parlant de Doug Bowman, c'est lui a demandé à Tantek Celic de créer ce faux bug.

Alors là, je ne comprends pas :blink:

Comment Doug Bowman aurait-il pu demander à Tantek Celic de créer un faux bug ? Il aurait fallu que ça se passe AVANT la sortie du logiciel, puisque Tantek n'avait logiquement plus accès aux sources APRES. De plus, installer sciemment un bug, ce serait du sabotage. Aurais-tu une adresse expliquant cette demande ?

3) le javascript et la sémantique, le rapport est bien simple: le javascript ne sert (théoriquement) qu'à apporter des add-ons non-indispensables à une page. Toi tu t'entêtes à vouloir parser les user-agent avec pour servir tes styles, libre à toi. Maintenant si tu as déjà la réponse à ta question, pourquoi la poses-tu ? :huh:

Donc tu considères que j'utilise le javascript à contre-emploi. Oui, il est vrai qu'on ne devrait pas avoir besoin de faire appel à javascript pour ce genre de choses. Ceci dit, quelle est le but précis de javascript ? Si on n'est pas censé s'en servir pour détecter le navigateur et faire des actions en fonction du résultat, pourquoi a-t-on accès aux variables désignant le navigateur ? Ceci étant dit, je vois tout à fait le sens de ta remarque, mais je ne considère pas ça comme de la sémantique : la sémantique concerne le sens des termes, ce qui est ici hors de propos.

4) Google est un site extraordinaire

Certes, mais ce n'est pas Google qui m'a donné la réponse : c'est toi ! J'ai trouvé l'info en farfouillant sur le site de Tantek à partir du point de départ que tu m'avais fourni. Au fait, merci :D

Vouais, mais çà rend quoi sur les navigateurs KHTML ton code (invalide :P). Car eux respectent le modèle standard mais n'appliquent pas les hacks -moz qui sont propres aux navigateurs Gecko :unsure:

Les -moz* ne sont pas des hacks : ce sont des propriétés propriétaires (désolé pour la redondance). Tous les navigateurs ont le droit de définir des propriétés css spécifiques, tant qu'ils les font précéder du préfixe défini par le w3c (il y a -moz, -mso et je ne sais plus quoi d'autre). Le code en question est donc théoriquement valide, quoi qu'en disent les valideurs robotiques qui ne connaissent la plupart du temps pas ces préfixes. Les propriétés en question sont simplement censées être purement et simplement ignorées par les navigateurs auxquels elles ne sont pas destinées.

Bon alors pas taper, je ne cherche nullement à allumer le feu de ta verve vengeresse : je DISCUTE c'est tout :D

Lien vers le commentaire
Partager sur d’autres sites

Donc tu considères que j'utilise le javascript à contre-emploi. Oui, il est vrai qu'on ne devrait pas avoir besoin de faire appel à javascript pour ce genre de choses. Ceci dit, quelle est le but précis de javascript ? Si on n'est pas censé s'en servir pour détecter le navigateur et faire des actions en fonction du résultat, pourquoi a-t-on accès aux variables désignant le navigateur ?
Non, d'ailleurs ni les spécifications javascript (en fait ECMAScript), ni le DOM du W3C définissant les propriétés auxquelles on a accès ne contiennent quoi que ce soit en ce sens, c'est un pur ajout des fabricants de navigateur, et comme d'habitude évidemment il est plus possible de s'en défaire tout ça tout ça...

Ce n'est donc pas dans l'esprit du javascript de faire ce genre de choses (d'ailleurs mieux vaut détecter les capacités du navigateur avec un if(document.getElementById) par exemple qu'il if(IE|Netscape).)

Les propriétés en question sont simplement censées être purement et simplement ignorées par les navigateurs auxquels elles ne sont pas destinées.
Dont KHTML/Safari, qui seront donc incapables d'afficher correctement la page :hypocrite: (en fait c'est plutôt ta page qui est mal conçue pour leur permettre de l'afficher correctement).

Les -moz* ne devraient pas être utilisés en production, en tous cas ceux qui ont une telle importance et une telle influence sur l'affichage de la page et peuvent la rendre totalement illisible (évidemment, un petit -moz-border-radius n'a jamais fait de mal, d'ailleurs je crois qu'il y a aussi un -khtml-border-radius ;) ).

Mais dans le cas du -moz-box-sizing c'est en tous cas pas quelque chose à utiliser dans une page web :rolleyes:

Lien vers le commentaire
Partager sur d’autres sites

1) JavaScript : nous sommes bien d'accord. Je ne détecte normalement en javascript que les fonctionnalités. Là c'est vraiment un cas particulier. (D'ailleurs j'utilise très peu JavaScript tout court :))

2) Ah ben forcément, si tu utilises des propriétés spécifiques à UN navigateur pour donner des consignes essentielles à TOUS les navigateurs, ça va beaucoup moins bien marcher. Ah ben forcément, c'est ballot :D

Pour -khtml, ça ne m'étonne guère : comme Firefox, il se contente de préparer le futur. Eh oui, contrairement à d'autres navigateurs que je ne citerais pas (comment ça c'est déjà fait ?), ils n'en sont pas au stade de corriger les erreurs du passé (lointain ?). ;)

PS : Merci Xavier, tu viens de rajouter dans ma liste de choses à faire "Lire la spec ECMAScript complète". Bon nbein j'vais pas m'embêter moi cet été :D

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...