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 :

style.display sous IE


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut style.display sous IE
    Bonjour,

    Je fais disparaître un div grace à style.display au chargement de la page .

    Ca marche bien sous Firefox mais pas sous IE il me met cette erreur :

    document.getElementById(...) n'est pas un objet ou à la valeur NULL

    Voici mon code :

    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
     
    <table class="tableau" id="stl_tab_recap_clt">
    	<tr>
    		<td>
    		Bla-bla
    		</td>
    	</tr>
    </table>
     
    <script>
     
    	if(document.referrer == "http://localhost/intranet/index.php?s=7" || document.referrer == "http://localhost/intranet/?s=7") {
    		document.getElementById('stl_tab_recap_clt').style.display = "none";
    	}
    </script>
    Une idée ??

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    fais une fonction de ton script. Tu l'appelleras sur le onload du <body>.
    Tel que tu lances ton script, l'objet <table> ne doit pas être créé au moment de l'exécution.

    A+

  3. #3
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    L'objet table est bien crée vu que le code javascript est placé après les balises <table> </table>, et ça marche sans problème sous Firefox, je pensais plutôt à un problème spécifique à IE ( j'utilise IE7).

    est-ce que quelqu'un à eu un problème similaire ?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par tibotibo69 Voir le message
    L'objet table est bien crée vu que le code javascript est placé après les balises <table> </table>, et ça marche sans problème sous Firefox, je pensais plutôt à un problème spécifique à IE ( j'utilise IE7).

    est-ce que quelqu'un à eu un problème similaire ?
    Oui, beaucoup de monde.

    As-tu testé ?
    FF et IE ne chargent pas forcément les objets du document de la même manière ...

  5. #5
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    Apparement l'objet <table> est bien crée car si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript">
        alert(document.getElementById('nom_de_mon_element'));
    </script>
    il m'affiche "[object]".

    Si je ne mets pas les balises <table></table>, il me met "null".

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Donc, tu n'as pas testé la solution donnée

  7. #7
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    je viens de tester en appelant ma fonction sur onLoad mais toujours le même résultat en pire.
    Ca ne marche pas sous IE et ca ne marche plus sous Firefox!!

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.referrer);
    te donne bien une des URL testée ?
    Tu appelles toujours ta page à partir d'un lien <A href=...> (dans le cas contraire le document.referrer risque d'être vide) ?

    A+

  9. #9
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    oui j'avais testé en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(document.referrer);
    les urls sont retournées correctement.

    j'appelle mes pages en faisant un onClick sur les lignes d'un tableau avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.location.href='?s=8&amp;c=$id_client&amp;co=$id_contrat'";

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par tibotibo69 Voir le message
    je viens de tester en appelant ma fonction sur onLoad mais toujours le même résultat en pire.
    D'après ton code il n'y a aucune raison que ça ne fonctionne pas (encore moins que ça fonctionne "moins bien" avec cette dernière modification)
    Peux-tu montrer le code que tu as testé avec onload ?
    Même si l'adaptation est correcte, ça donnera peut être des pistes sur la cause de l'erreur (d'ailleurs, tu devais en avoir une après la modif puisque ça ne marchait pas => laquelle ?) ...

    A+

  11. #11
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    il n'y avait pas vraiment d'erreur, c'est juste que mon bloc s'affichait alors qu'il devrait être invisible.

    Voici mon code j'espère que ça pourra t'éclairer.
    Etant donné la taille de ma page je ne copie que les informations essentielles.

    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
     
    <html>
    <body onLoad = "cache_client();">
    <table class="tableau" id="stl_tab_recap_clt">
        <tr>
            <td>
                Bla-bla
            </td>
        </tr>
    </table>
     
    <script>
    function cache_client() {
     
    	if(document.referrer == "http://localhost/intranet/index.php?s=7" || document.referrer == "http://localhost/intranet/?s=7") {
    		document.getElementById('stl_tab_recap_clt').style.display = "none";
    	}
    }
    </script>
     
    </body>
    </html>

  12. #12
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Perturbation visiblement dûe à autre chose dans ta page : si je prends ton code tel quel, il fonctionne dans mon pauvre IE6 (la table s'affiche puisque le test est KO).
    Si j'enlève le test sur referrer, la table ne s'affiche plus.

    Tu as peut être une autre erreur JS (ou autre ) qui plante les scripts avant celui-ci ...

    A+

  13. #13
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    En fait, je reprends l'application de quelqu'un avec des pages dans tous les sens , c'est pourquoi je ne voulais pas faire de fonction, j'avais donc mis tout mon code dans la même page et ça marchait correctement avec Firefox mais pas sous IE7.

    Si mon code marche avec Firefox , c'est qu'il ne doit pas être mauvais.

  14. #14
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par tibotibo69 Voir le message
    Si mon code marche avec Firefox , c'est qu'il ne doit pas être mauvais.
    Je n'ai pas dit le contraire. Le problème est plutôt qu'un "bon code" ne fonctionne pas forcément sous IE

    A+

  15. #15
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    D'accord.
    Merci quand même.

    Si quelqu'un a d'autres idées, je suis preneur

  16. #16
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Fait un alert sur document.referrer pour voir ce qu'il contient. Il n'y a pas de majuscules, de caractères spéciaux ?

  17. #17
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    quand je fais document.referrer;

    j'obtiens : http://localhost/intranet/?s=7

    ou ça

    http://localhost/intranet/index.php?s=7

    suivant la page ou j'appelle.

    Apparement pas de problème à ce niveau.

  18. #18
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    à tout hasard essaye ceci :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var chemin1 = "http://localhost/intranet/?s=7";
    var chemin2 = "http://localhost/intranet/index.php?s=7";
     
    if (document.referrer == chemin1 || document.referrer == chemin2)
    {
     
     
    }

    ou avec les caractères d'échappement :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var chemin1 = "http:\/\/localhost\/intranet\/?s=7";
    var chemin2 = "http:\/\/localhost\/intranet\/index.php?s=7";
     
    if (document.referrer == chemin1 || document.referrer == chemin2)
    {
     
     
    }

  19. #19
    Membre éclairé Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Par défaut
    j'ai fais comme tu m'as dit, pas de problème il rentre bien dans la condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var chemin1 = "http://localhost/intranet/?s=7";
    	var chemin2 = "http://localhost/intranet/index.php?s=7";
     
    	if(document.referrer == chemin1 || document.referrer == chemin2) {
    		alert(document.referrer);
    		document.getElementById('stl_tab_recap_clt').style.display = "none";
    	}
    l'alert se déclenche mais la div ne disparait toujours pas!

  20. #20
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    - deux éléments n'ont pas le même id ?
    - document.getElementById('stl_tab_recap_clt') renvoit bien un objet ?
    - il n'y a pas d'erreur dans l'id ?

Discussions similaires

  1. compatibilité style display sous IE
    Par kOrt3x dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/10/2010, 15h55
  2. style.display ne marche pas sous Firefox
    Par Lenezir dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/03/2008, 10h24
  3. application style xp sous c++ builder
    Par sofiane44 dans le forum C++Builder
    Réponses: 1
    Dernier message: 08/01/2006, 15h17
  4. [W3C] Problème avec la balise div et le style "display:none&a
    Par Golork dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 14/11/2005, 20h30
  5. Pb style display avec Firefox mal appliqué
    Par frochard dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/07/2005, 23h48

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