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 :

Fonction toggle marche po


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 77
    Points
    77
    Par défaut Fonction toggle marche po
    Bonjour !

    Justement j'avais le même problème : afficher certaines infos si JavaScript n'est pas activé, et afficher le site "normal" si JavaScript est activé.
    J'ai suivi les conseils dans un post de ce site, et je remarque que dans ce topic E.Bzz conseille la même chose.

    Le seul problème c'est que chez moi ça ne marche pas... Pourquoi ?

    Voici le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <script type="text/javascript">
    	function forceJavaScript()
    	{
    		var div = document.getElementById('div_noscript');
    		alert(div);
    		alert(div.style.display);
    		var div2 = document.getElementById('div_javascript');
    		alert(div2);
    		alert(div2.style.display);
    		div.style.diplay = "none";
    		div2.style.diplay = "block";
    		alert(div.style.display);
    		alert(div2.style.display);
    	}
    </script>
    <body onload='forceJavaScript()'>
    	<div id="div_javascript" style="display:none;">
    		// du code PHP qui génère ma page "normale" du site
    	</div>
    	<div id="div_noscript" style="display:block;">
    		require_once('include/banner.php'); // juste un div avec une image de fond
    		require_once('pages/error_no_javascript.php'); // une page php qui fait juste "echo 'blabla';"
    	</div>
    </body>
    Voici ce que me renvoient les 'alert' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    object HTMLDivElement
    block
    object HTMLDivElement
    none
    block // ici je devrais avoir 'none'
    none // ici je devrais avoir 'block'
    Il y a deux problèmes :
    1) le style des div n'est PAS changé, et du coup ma page n'est pas visible, je ne vois que le ptit script php qui affiche 'blabla'
    2) encore pire : je suis censé voir le block 'div_noscript' (puisque ca bug), mais le plus grave c'est que je ne vois même pas le header ! (le div avec une image en background)

    Si quelqu'un voit où j'ai fait une erreur svp... ? (je précise que ce sont mes premiers pas, ou presque, en javascript)

    Merci beaucoup d'avance !

    EDIT : j'ai créé un nouveau topic car le précédent étant résolu par son auteur, je risquais pas de toucher bcp de monde
    EDIT2 : j'ai tenté de déplacer le code du javascript a plein d'endroits de la page, sans succes

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 77
    Points
    77
    Par défaut
    Nouveauté !

    Je continue de faire des tests...
    Si je mets le style dans un css plutot que directement dans le div, les alert() affichant le style n'affichent plus rien... C'est normal ça ??

    Pfff jcomprends plus rien

    Pliiiiiz help !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 77
    Points
    77
    Par défaut
    Bon pour le problème d'affichage/masquage c'est réglé. Je viens de remarquer que dans la code que j'avais chopé sur le net, il était marqué "diplay" et non "display".

    Par contre reste 2 problèmes :
    1) Pourquoi ça n'affiche rien dans mes alert() si je mets le style dans mon fichier CSS et non dans le div directement ?
    2) Pourquoi l'include de la banner ne semble pas marcher ? (jvais fouiller, dans 95% des cas c'est le gars qui pose la question qui a oublié un truc :p )

    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 77
    Points
    77
    Par défaut
    Encore une chtite question pour la forme :

    Quand je détecte que JavaScript n'est pas activé, j'affiche une (grosse) page qui explique comment l'activer avec tous les navigateurs.
    Le souci c'est que si JavaScript est activé, on a le temps d'apercevoir rapidement cette page (donc dans le div:display=block) avant que la fonction du onload soit appelée et donc cache ce div et montre le div de la page "normale".

    Y a-t-il un moyen de bypasser ça ?

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    Citation Envoyé par Lideln
    Par contre reste 2 problèmes :
    1) Pourquoi ça n'affiche rien dans mes alert() si je mets le style dans mon fichier CSS et non dans le div directement ?
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("idElement").style.attribut =
    Cette syntaxe permet de lire les valeurs contenues dans l'attribut style et non la CSS (lecture du "style en ligne"). Donc pour plus de simplicité laisse ton code tel qu'il est.


    2) Pourquoi l'include de la banner ne semble pas marcher ? (jvais fouiller, dans 95% des cas c'est le gars qui pose la question qui a oublié un truc :p )
    Je ne connais pas le PHP, je ne peux pas te répondre

    Y a-t-il un moyen de bypasser ça ?
    Non, pas en javascript en tout cas... le script ne peut pas s'executer tant que la page n'est pas chargée. Mais tu peux faire une redirection


    Exemple :
    Code html : 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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html>
    <head>
    <title> Page d'accueil</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="fr" />
    <meta http-equiv="Refresh" content="5; URL=http://pageNoScript.htm" />
     
     
    <script type="text/javascript">
    <!--
    function redirection()
    {
     document.location.href="pageScript.htm";
    }
     
    //-->
    </script>
     
    </head>
     
    <body onload="redirection()">
     
    <h3 style="color: #5555FF">Veuillez patientez.....</h3>
     
    </body>
     
    </html>

    Si ton navigateur a son javascript activé alors la fonction redirection est activée.
    Si le javascript n'est pas activé, la balise meta :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="Refresh" content="5; URL=http://pageNoScript.htm" />
    réorientera l'utilisateur vers pageNoScript.htm au bout de 5 secondes

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Points : 77
    Points
    77
    Par défaut
    Han !!!

    C'est tellement évident maintenant que tu le dis ! Pour être honnête j'avais pensé au truc de redirection au bout de x secondes, mais je pensais que c'était du javascript (et oui je suis gros débutant )

    Je vais tester ça dès demain soir (car là dodo, car demain matin boulot )

    Merci beaucoup !
    (et merci pour le msg privé aussi)

    Lideln

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    encore mieux :
    Code html : 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
    34
    35
    36
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html>
    <head>
    <title> Page d'accueil</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="fr" />
    <meta http-equiv="Refresh" content="2; URL=http://pageNoScript.htm" />
     
     
    <script type="text/javascript">
    <!--
    function redirection()
    {
     document.location.href="pageScript.htm";
    }
     
    //-->
    </script>
     
    </head>
     
    <body onload="redirection()">
     
    <h3 style="color: #5555FF">Veuillez patientez.....</h3>
     
    <div>
    Vous allez être redirigé vers une autre page dans quelques secondes.... 
    <a href="pageNoScript.htm" title="redirection">
    Si rien ne se produit cliquez sur ce lien
    </a>
    </div>
     
    </body>
     
    </html>
    Comme ça si la redirection ne s'opère pas, l'utilisateur aura toujours un lien de secours
    Et accessoirement, dans la balise meta j'ai réduis le temps d'attente à 2 secondes (si le navigateur a javascript, la redirection est instantannée).

  8. #8
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Généralement on fait plutot ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <HEAD>
       ...
       <!-- A insérer dans toutes les pages du sites sauf http://pageNoScript.htm -->
       <NOSCRIPT>
           <meta http-equiv="Refresh" content="2; URL="http://pageNoScript.htm" />
       </NOSCRIPT>
       ...
    </HEAD>
    <BODY>
       <!-- Contenu de la page -->
    </BODY>
    On redirige si il n'a pas javascript activé
    Si javascript est activé, il n'y a pas de partie de page "Activer le JavaScript" qui s'affiche
    Si javascript est activé, la partie page "Activer le JavaScript" n'est pas téléchargé à chaque fois, donc gain de vitesse et de bande passante !

Discussions similaires

  1. [EasyPHP] fonction mail marche pas en local
    Par sitalgerie dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 02/04/2007, 20h01
  2. pourquoi ma fonction ne marche pas?
    Par isma92 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 30/01/2007, 14h22
  3. Réponses: 2
    Dernier message: 13/12/2006, 13h33
  4. [Surnaturel] Une fonction qui marche en débug, pas en release
    Par 10_GOTO_10 dans le forum C++Builder
    Réponses: 6
    Dernier message: 04/07/2006, 14h22
  5. Fonction qui marche sous FF mais pas IE
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 14h07

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