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 :

Page embarqué par Iframe proprement et alternative.


Sujet :

HTML

  1. #1
    Membre habitué

    Homme Profil pro
    Sans emploi
    Inscrit en
    Août 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Août 2019
    Messages : 72
    Points : 127
    Points
    127
    Par défaut Page embarqué par Iframe proprement et alternative.
    Bonjour,

    J'aurai voulu avoir des avis sur la balise HTML <iframe>. Je crée quelques pages web en local chez moi en HTML, CSS et un peu de Javascript pour l'instant.
    J'aimerai évité pour le moment le php ou base MySQL. En ce moment j'utilise la balise <iframe> pour la navigation et ne pas avoir à réécrire le menu principale et mettre à jour le contenu d'une page...

    Est-ce une bonne idée comme procédé? Si non; quel serait un meilleur choix?

    Deuxièment ma question principale avant de me lancer dans ce topic était: pour qu'un site soi valide W3C avec des balises iframe faut-il que chaques page même celles embarquée par <iframe> contienne les balises <head> <title> <doctype html> <body> etc...Je me pose cette question car si je suis la logique d'un iframe ces balises risques de se répéter lors du chargement d'une de mes page. Comment utiliser cette balise proprement donc voilà ma question? donc une iframe juste avec les balise <p> dans une page embarqué par une autre page qui contiendrait <body> par exemple permettrait-elle de faire passer le site en W3C?

    Merci.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    J'aimerai évité pour le moment le php ou base MySQL. (...)
    Est-ce une bonne idée comme procédé? Si non; quel serait un meilleur choix?
    Les <iframe> sont plutôt prévues pour « embarquer » des éléments venant d'autres horizons que le tien, mais rien ne t'empêche de les utiliser comme tu le fais pour un menu en attendant que tu ne l’intègres directement, ou automatiquement côté serveur, quand tu te sentiras apte à le mettre en place.

    pour qu'un site soi valide W3C avec des balises iframe faut-il (...)
    le contenu des <iframe> représente un contenu à part et hors context de ta page principale, même si certaines balises peuvent être omises il me semble préférable que chaque document intégré soit valide. Cela ne sera que mieux lorsque tu auras décidé de te passer de l'<iframe>, tu n'auras rien de plus à faire.

  3. #3
    Membre habitué

    Homme Profil pro
    Sans emploi
    Inscrit en
    Août 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Août 2019
    Messages : 72
    Points : 127
    Points
    127
    Par défaut
    Donc un site web à généralement son menu qui est intégré de façon manuelle sur chacune des pages sans passé par une iframe ou autre technique du genre? (Cad copié collé le code du menu sur chaque page?)

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    quand un site contient des éléments qui se répètent, il vaut mieux utiliser du code côté serveur (comme PHP par exemple) ou du code côté client (comme JavaScript par exemple).

    si vous voulez utiliser du JavaScript, vous pouvez regarder comment faire avec jQuery qui simplifie beaucoup de chose comme par exemple créer un nouvel élément HTML de votre menu :
    https://api.jquery.com/category/manipulation/

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    il vaut mieux utiliser du code côté serveur (comme PHP par exemple)
    tout à fait avec un simple <?php include ... ?>.



    (...) vous pouvez regarder comment faire avec jQuery (...)
    oui mais non

    Pour un menu une simple boucle d'insertion sur base d'un objet JSON est suffisante et simple à réaliser.

    Toutefois si jQuery est utilisé par ailleurs alors là OUI !

  6. #6
    Membre habitué

    Homme Profil pro
    Sans emploi
    Inscrit en
    Août 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Août 2019
    Messages : 72
    Points : 127
    Points
    127
    Par défaut
    Json et Jquery ca me semble vague tout ça car je n'ai pas de connaissances dans ces deux termes là..Est-ce nécessaire? Un menu en Javascript j'ai essayé de trouvé des tutoriaux la dessus mais ça me semble plus difficile à mettre en oeuvre qu'en HTML et CSS. pour l'instant c'est ainsi que je travails sur base d'une liste à puce (ul, li)

    Avez vous sous la main un code minimal se basant sur du Javascript? aussi non possible que par la suite j'en viendrais au php..Mais en ce moment je travail en local donc ca me semblait faire du lourd en installant "mon propre serveur php" via Wamp je crois alors que je peux faire léger avec les languages cités.


    ------------

    Je réédite le message après quelques recherches supplémentaire j'ai trouvé une piste en Javascript qui pourrait me convenir. Merci.

    Voici un code si ça intéresse quelqu'un.

    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
     
     
    <!DOCTYPE html>
    <html><head>
        <script type='text/javascript'>
        <!--  w ww  .ja  v  a 2  s.  c  om-->
            function MenuR(){               
                var ul=document.createElement('ul');
            var li=document.createElement('li');
            li.innerHTML="<a href=''>Acceuil</a>"+" "+"Page d'Acceuil";
            ul.appendChild(li);
                    var li=document.createElement('li');
            li.innerHTML="<a href=''>Codes</a>"+" "+"Sometext";
            ul.appendChild(li);
                    document.getElementById('twitter_status').appendChild(ul);
        }
        </script>
    </head>
    <body >
      <div id="bloc"></div>
      <script type="text/javascript">
    <!--
    MenuR();
    -->
    </script>
    </body>
    </html>
    Il ne restera plus qu'a séparer le script js du code et appeler la fonction pour faire appel au menu dans chaque page

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Je te soumet une façon de procéder simple et qui tiens en peu de ligne, pour navigateurs modernes

    Dans ta page HTML, et donc toutes celles concernées par ton menu, il suffit de réserver une place pour ton menu, par exemple
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <body>
      <header>
        <nav></nav>
      </header>
      <main>
        <!-- la suite du document -->
    à partir de là il faut créer ton « objet JSON » décrivant tes différents liens, par exemple :
    Code javascript : 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
    const menu = [
      {
        text: "Accueil",
        href: "accueil.html"
      },
      {
        text: "Blog",
        href: "blog.html"
      },
      {
        text: "News",
        href: "news.html"
      },
      {
        text: "?",
        href: "about.html"
      }
    ];
    ... rien de bien compliqué, chaque lien dirigera vers le href et apparaitra à l'écran sous text.

    Maintenant la routine de création, en « JavaScript moderne » :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    document.addEventListener("DOMContentLoaded", () => {
      const docHref = document.location.pathname.split("/").pop();
      const oDest = document.querySelector("nav");
      menu.forEach((m) => {
        oDest.insertAdjacentHTML("beforeend", `<a href="${m.href}" ${m.href == docHref ? 'class="isactive"' : ""}>${m.text}</a>`);
      });
    });
    ... on notera qu'ici le lien vers la page active sera désactivé en CSS.

    Voilà le tour est joué ou presque, il faut prévoir un minimum de CSS pour que cela ait de la « gueule ».

    On pourrait mettre par exemple :
    Code css : 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
    nav {
      display: inline-flex;
      line-height: 2.5em;
      cursor: pointer;
    }
    nav a {
      padding: 0 1em;
      text-align: center;
      text-decoration: none;
      color: #08F;
    }
    nav a:hover {
      background: #EEE;
    }
    nav a.isactive {
      color: #888;
      pointer-events: none;
    }

    Maintenant si on fait la synthèse tout cela, il faut intégrer le fichier JS et le CSS, qui peut se trouver dans la feuille de style générale, on aurait quelque chose comme :
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Page Accueil</title>
    <link rel="stylesheet" href="menu-auto.css">
    <script src="menu-auto.js"></script>
    </head>
    <body>
      <header>
        <nav></nav>
      </header>
      <main>
        <section>
          <h1>Accueil</h1>
        </section>
      </main>  
    </body>
    </html>
    Le fichier appelé ci-dessus menu-auto.js ressemblerait à :
    Code javascript : 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
    "use strict";
    //  Définition des liens
    const menu = [
      {
        text: "Accueil",
        href: "accueil.html"
      },
      {
        text: "Blog",
        href: "blog.html"
      },
      {
        text: "News",
        href: "news.html"
      },
      {
        text: "?",
        href: "about.html"
      }
    ];
    //  Création des éléments
    document.addEventListener("DOMContentLoaded", () => {
      const docHref = document.location.pathname.split("/").pop();
      const oDest = document.querySelector("nav");
      menu.forEach((m) => {
        oDest.insertAdjacentHTML("beforeend", `<a href="${m.href}" ${m.href == docHref ? 'class="isactive"' : ""}>${m.text}</a>`);
      });
    });

    Note qu'en PHP la même démarche pourra être appliquée.

  8. #8
    Membre habitué

    Homme Profil pro
    Sans emploi
    Inscrit en
    Août 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Août 2019
    Messages : 72
    Points : 127
    Points
    127
    Par défaut
    Merci pour votre réponse claire. Hélas je suis confronté à un autre problème qui rentre en conflit avec le language Javascript et auquel je ne peux pas faire grand chose à part passer je pense au PHP comme vous l'avez proposez au début. J'aimerai que le site soit navigable, lisible, en partie en tout cas, dans un navigateur en mode textuel. Hors je me rend compte que Links et Lynx ne supporte pas le language Javascript...Du coup pas de menu. Et l'hébergeur sur lequel je suis ne permet pas à Lynx de se connecté sur le site ce qui est un tout autre soucis. J'ai vu lynx pouvoir navigué sur certains site en php par contre ce qui m'a étonné.

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    je ne peux pas faire grand chose à part passer je pense au PHP comme vous l'avez proposez au début.
    C'est la solution de bas et, comme également dit, la démarche de réalisation de ton menu inclus sera la même que celle que je t'ai proposée.

Discussions similaires

  1. Réponses: 9
    Dernier message: 18/02/2011, 16h23
  2. Ouvrir une page dans une Iframe par js
    Par 10-nice dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/08/2005, 16h24
  3. [iframe] communication entre page popup et iframe
    Par Darkdaemons dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/08/2005, 13h18
  4. Page personnalisée par l'utilisateur dans l'application
    Par Rodrigue dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/05/2005, 17h45
  5. [ifrmaes]Charger une page dans une iframe
    Par Destampy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/05/2005, 15h54

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