IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Savoir si une propriété CSS existe dans un navigateur


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut Savoir si une propriété CSS existe dans un navigateur
    Salut

    Je cherche un moyen de savoir (en java... ah non javascript ) si un navigateur gère ou pas une propriété CSS. Genre "table-cell" (par le plus grand des hasard, au pif sans réfléchir (non en fait, c'est exacement celle là que je voudrais tester )) pour pouvoir affecter le display en conséquence.

    Je voudrais ca parce que j'ai un code comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <table>
        <tr>
            <td id="td1">blablabla</td>
            <td id="td2" style="display: none">blobloblo</td>
        </tr>
    </table>
    <input type="button" id="btn_change" onclick="change(); return false;" />
    <script language="javascript" type="text/javascript">
        function change()
        {
            var obj_td1 = getElementById('td1');
            var obj_td2 = getElementById('td2');
     
            if(obj_td1.style.display = 'none')
            {
                obj_td1.style.display = 'table-cell ou block';
                obj_td1.style.display = 'none';
            }
            else
            {
                obj_td1.style.display = 'none';
                obj_td1.style.display = 'table-cell ou block';
            }
        }
    </script>
    Le truc c'est que je voudrais éviter de faire une détection de navigateur (je trouve que c'est pas super, je préfère tester l'existance d'une fonction plutot que de tester savoir sur quel navigateur je suis, surtout avec la diversité des navigateurs à l'heure actuelle (et ce, bien que seulement 2 soient présent et 1 seul pour la boite pour laquelle je bosse, mais ca c'est une autre histoire, je préfère laisser un code propre si du jour au lendemain ils décident de passer sous Firefox ou autre))

    Or, si je met 'table-cell', IE me dit gentillement que 'table-cell' n'est pas une propriété valide, et si je met 'block', l'affichage est dégueu dur Firefox...

    Quelqu'un a une idée ?

    EDIT : J'ai fais un truc de porc en attendant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <script language="javascript" type="text/javascript">
        function change()
        {
            var obj_td1 = getElementById('td1');
            var obj_td2 = getElementById('td2');
     
            if(obj_td1.style.display = 'none')
            {
                try
                {
                    obj_td1.style.display = 'table-cell';
                }
                catch(err)
                {
                    obj_td1.style.display = 'block';
                }
                obj_td1.style.display = 'none';
            }
            else
            {
                obj_td1.style.display = 'none';
                try
                {
                    obj_td2.style.display = 'table-cell';
                }
                catch(err)
                {
                    obj_td2.style.display = 'block';
                }
            }
        }
    </script>

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    a mon avis il te faudrait faire un test dans une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (prop in obj.style)
    pour verifier si la propriété est prise en compte par le navigateur
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    Voici un code qui fonctionne parfaitement sous firefox ...
    On rentre la proprété à tester dans l'input ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <script type='text/javascript'>
    Object.prototype.HasCSSProp= function(prop){
    var  flag = false;
    for (CssProp in this.style) {
     if (prop == CssProp){flag=true;}
     }
    return flag;
    } 
    </script> 
    </head>
    <body >
    <div id='one' style="border:solid 1 pd red; width:50px;">&nbsp;</div>
    <input type='text' id='testprop'  />
    <input type='button' value="test" onclick="alert(this.HasCSSProp(document.getElementById('testprop').value))">
    </body>
     
    </html>
    Si quelqu'un peut m'explique pourquoi IE n'apprécie pas ?


    Ceci étant je m'aperçois que je suis hors sujet car ce code teste l'existance de la propriété et non ses valeurs possibles
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Ceci étant je m'aperçois que je suis hors sujet car ce code teste l'existance de la propriété et non ses valeurs possibles
    Ben justement, moi c'est ca qui m'aurait interessé

    Mais merci pour le code pour savoir si la propriété existe ca peut toujours servir

Discussions similaires

  1. Savoir si une propriété existe
    Par Papy214 dans le forum C#
    Réponses: 1
    Dernier message: 23/11/2007, 15h56
  2. [VBA-E] Savoir si une cellule est contenue dans une plage
    Par psych0o0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2006, 14h12
  3. Réponses: 2
    Dernier message: 06/05/2006, 22h50
  4. Réponses: 7
    Dernier message: 05/05/2006, 19h55
  5. Changer une propriété css d'un div en cliquant sur un lien
    Par Le Mage Noir dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 26/01/2006, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo