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

HTML Discussion :

Redirection valide dans un noscript ou solution équivalente


Sujet :

HTML

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut Redirection valide dans un noscript ou solution équivalente
    Bonjour,

    après des recherches intensives, j'ai lu le problème que je rencontre plusieurs fois, mais pas la solution qui va avec.

    Voici l'extrait du site qui est important :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div id="main">
                    <!-- displayed if javascript unsupported -->
                    <noscript>
                        <p>Javascript required</p>
                    </noscript>
                    <p>le reste du site .................</p>
                </div><!-- fin de #main -->
    Ce que j'aimerais, c'est que le reste du site ne soit pas affiché quand le javascript est désactivé. Ce qui revient à :

    1) soit effectuer une redirection vers une page qui explique que le javascript est requis. Dans ce cas, existe-t'il une solution valide W3C (donc pas de balise meta) ?
    2) soit par une opération du saint-esprit , trouver un moyen de masquer le reste du site... Dans ce cas, quelle est cette opération ?


    Merci d'avance de votre aide !
    Rolf IV

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 308
    Points : 349
    Points
    349
    Par défaut
    Bonsoir,

    A priori tu ne peu faire n'y l'un n'y l'autre, par contre tu peu suivre l'exemple du W3C en fournissant un texte explicatif et/ou un lien vers une page l'expliquant.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    bonsoir,

    ça m'arrange pas trop ça...

    du coup, j'ai d'autres questions :

    - n'y a t'il pas d'autres moyens de savoir si le javascript est activé par le client ou non (j'utilise PHP côté serveur) ?

    j'ai déjà essayé de mettre le reste du site entre <script> (sans attribut -ce qui est pas valide de ttes façons-) et </script>, mais rien n'est interprété du coup...

    - est-il possible de mettre le reste du site dans une balise telle que <script type="text/php"> ou <script type="text/html"> ???

    merci d'avance,
    Florent

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Non, ce n'est pas possible, en revanche tu peux faire le contraire : ta page pour le cas où JavaScript est désactivé et une balise script qui redirige vers la page avec JavaScript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    location.replace(page_javascript);
    </script>
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 747
    Points
    3 747
    Par défaut
    Bonjour,

    Citation Envoyé par Bovino Voir le message
    Non, ce n'est pas possible, en revanche tu peux faire le contraire : ta page pour le cas où JavaScript est désactivé et une balise script qui redirige vers la page avec JavaScript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    location.replace(page_javascript);
    </script>
    Une redirection en javascript alors que le javascript est désactivé ?
    Je ne réponds pas aux questions techniques par MP.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    si le javascript est désactivé, seul le contenu du noscript sera affiché et rien d'autre (puisque dans ce cas, la redirection se fera effectivement pas)...

    sinon, le contenu normal... effectivement, la solution me paraît pas mal...
    je pense que le bouton sera bientôt utilisé

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    hmmm en fait, ça colle pas...

    mon contrôleur PHP inclut mon gabarit HTML à la fin des requêtes utilisateur...
    et mon contrôleur est le passage obligé de toute requête utilisateur...

    certes, je peux inclure évidemment un gabarit prévu au cas où Javascript est désactivé (en fin de contrôleur donc)...

    mais s'il est activé, comment je fais pour rediriger la requête utilisateur initiale puisqu'il faut qu'elle transite OBLIGATOIREMENT par le contrôleur (et que celui-ci inclut le gabarit "no javascript") ???


    arghhh, je me retrouve coincé, non ?
    (si ce que je raconte est pas clair, dites-le moi)...

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    (si ce que je raconte est pas clair, dites-le moi)...
    Euh... oui, j'avoue que je comprends pas tout là
    En revanche, tu peux tester en PHP si JavaScript est activé ou non : une méthode possible
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 747
    Points
    3 747
    Par défaut
    Sinon tu as :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <noscript><meta http-equiv="refresh" content="0 url=http://taversionsansjs.html" /></noscript>
    Je ne réponds pas aux questions techniques par MP.

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    bon, en fait, je vais vous résumer très rapidement le fonctionnement de mon appli, je pense que ça vous aide à comprendre mon problème...

    voilà mon contrôleur... (fichier RACINE_DU_PROJET/public/index.php)

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?php
    #inclusion des fichiers de config
    #[...]
    #Assignation des variables incluses dans le gabarit HTML
    #[...]
     
     
    /**
     * Demarrage de la session
     */
    session_start();
     
    #Authentification
    #[...]
     
    /**
     * Recuperation de l'action utilisateur (on la recupere de l'URL)
     */
    $action = isset($_GET['a']) ? $_GET['a'] : "accueil";
     
    /**
     * Debut du controleur : reponse en fonction de la requete
     */
    try {
        switch($action) {
     
        case "accueil":
            $titre_principal =      "Bonjour Monsieur";
            $main =                  "<p>J'espère que vous allez bien</p>";
            break;
     
        case "direToto":
            $titre_principal =      "Bonjour.....";
            $main =                  "<p>.... toto !</p>";
            break;
        
         default :
           $titre_principal =       "Requ&ecirc;te inconnue";
           $main =                  "<p><a href='".BASE_URL."public/'>Retour &agrave; l'accueil</a></p>";
           break;
        }
    }
    catch(Exception $e) {
    //log de l'exception
    }
     
    /**
     * Inclusion des fragments (recuperation du contenu du fichier)
     * /!\ toutes les autres variables d'inclusion doivent etre definies avant /!\
     */
    ob_start();
    include(BASE_DIR .         "ui/fragments/menu_haut.frg.php");
    $header=                   ob_get_contents();
    ob_end_clean();
     
    ob_start();
    include(BASE_DIR .         "ui/fragments/public/menu_bas.frg.php");
    $footer=                   ob_get_contents();
    ob_end_clean();
     
    /**
     * Inclusion du gabarit HTML
     */
    include(BASE_DIR .         "ui/skeletons/public.html.php");
    Certes, j'ai pris un exemple tout bête....
    Comme vous le voyez, l'inclusion du gabarit se passe à la toute fin, qd toutes les variables utilisées sont celui-ci ont été définies....

    Imaginons que l'utilisateur clique sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="URL_ABSOLUE/public/index.php?a=direToto">Message secret d'une importance vitale</a>
    Nous sommes dans le case "direToto" du contrôleur, et le message s'affiche correctement.


    Seulement, imaginons que le javascript soit requis, et que notre utilisateur l'ait désactivé. Si j'inclus une balise <noscript><p>Activez javascript, boudiou!</p></noscript>, ce message s'affichera, mais le reste aussi, et ça, je ne veux pas.

    Si j'inclus de base un fichier qui contient <noscript>....</noscript> et <script...>redirection</script>
    Je redirige où ?

    Toutes les requêtes utilisateurs transitent par le contrôleur, donc je dois trouver un moyen de forwarder celle-ci...

    Je souhaiterais donc quelque chose comme ça (en fin de contrôleur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($javascript_active) {
    include(BASE_DIR .         "ui/skeletons/public.html.php");
    }
    else {
    include(BASE_DIR .         "ui/skeletons/public_nojs.html.php");
    }

    Dans la solution que vous me proposez, j'inclus un fichier intermédiaire (<noscript>blabla</noscript><script...>redirection</script>)

    Or, l'architecture de mon appli permet pas de faire ça comme vous pouvez le voir ! Tout transite par le contrôleur !


    Dites-moi encore si c'est pas clair !
    Merci beaucoup de votre aide

    Rolf

    P.S. : et bien sûr, la solution doit être valide XHTML1.0 Strict

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    hmmm, soit y'a vraiment pas de solution à mon problème, soit je suis définitivement pas clair...

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Bonjours Rolf-IV !

    J'ai exactement le même problème pour mon site.

    Etant un fervent partisan de la normalisation, d'un code propre, bien écrit et surtout dans les règles de l'art, j'estime la validation W3C indispensable.
    Sinon on a cas coder avec ses pieds sans réfléchir.

    La première solution serait la balise <meta> dans le <noscript>, mais non-valide selon W3C.

    La proposition de Bovino m'a l'air la plus 'propre', mais comme tu le dis, rediriger le client vers une autre page n'est pas forcément la solution.
    De plus, une fois sur la bonne page, si l'internaute (pris d'une petite folie) décide de désactiver le JavaScript, le site ne fonctionne plus correctement et la balise <noscript> n'a plus d'utilité.

    Le php aurait été une solution possible, mais le fait qu'il soit coté serveur et que le JavaScript soit de coté client, ça n'arrange rien.

    En résumé, on tourne en rond !

    Ma solution serait qu'une divine intervention fasse en sorte que lorsque le <noscript> s'active, le reste de la page ne s'affiche pas, ou que seulment une partie spécifique s'affiche.

    Cependant, si tu as trouvé une solution depuis, je suis preneur.

    Cordialement,
    Jpeg69

    PS : "Il n'y a pas de problème sans solution. Donc s'il y a une solution, il n'y a plus de problème..."

    PS 2 : ils pourraient quand même simplifier tout se charabia de code HTML...

    PS 3 : j'ai trouvé une solution horrible valide selon W3C, mais qui ne marche que sous FireFox (testé seulement en local). C'est tellement mal codé que je n'ose pas le montré...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 190
    Points : 80
    Points
    80
    Par défaut
    Bonjour,
    j'ai exactement le même soucis,
    est ce que quelqu'un a trouvé une solution (valide w3c) à ce problème depuis?
    a part bien évidément <noscript>javascript désactivé</noscript>
    car je ne vais pas mettre tout le contenu de ma page dans un no script lol

Discussions similaires

  1. Validation dans les tables
    Par Isabelle27 dans le forum Access
    Réponses: 8
    Dernier message: 02/05/2006, 15h14
  2. [debutant]redirection auto dans un servlet
    Par Battosaiii dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 18/04/2006, 10h41
  3. Réponses: 23
    Dernier message: 11/04/2006, 17h33
  4. [STRUTS][Validation] - Validation dans un execute
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 8
    Dernier message: 07/12/2004, 10h55
  5. Récupération de données validées dans une pop-up
    Par hdd dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2004, 16h47

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