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 :

Redirection dans une iframe


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Par défaut Redirection dans une iframe
    Bonsoir,

    Mon site comporte une iframe dans lequel est appelé des pages du style http://www.mes-instants-gourmands.com/fiche.php?id=1 à partir du menu de mon index.

    Si ma page http://www.mes-instants-gourmands.com/fiche.php?id=1 est appelé directement depuis le client j'ai mis une redirection qui la renvoie vers l'index :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <SCRIPT LANGUAGE="JavaScript">
    if (parent.frames.length < 1)
    	{
    	document.location.href = 'http://www.mes-instants-gourmands.com/index.php';
    	}
    </SCRIPT>
    Mais du coup je me retrouve avec la page d'accueil qui s'affiche dans l'iframe et non la page initialement demandée.

    Comment puis-je faire pour que ma fiche se redirige vers l'index et se réouvre dans la frame ?
    Tout ça pour que le visiteur ait accès au menu et autres fonctions de mon site

    J'espère avoir été clair

    Merci

    Garg

  2. #2
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Ca devrait aller mieux ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parent.document.location.href = 'http://www.mes-instants-gourmands.com/index.php';
    Mais j'avoue ne pas avoir tout saisi

  3. #3
    Membre confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Par défaut
    Merci,

    mais ça n'a pas résolu mon problème.

    Pour être plus clair, je veux que ma page http://www.mes-instants-gourmands.com/fiche?id=18 quand elle est appelé directement s'ouvre dans la frame prévu à cet effet de mon index.

  4. #4
    Membre confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Par défaut
    J'ai trouvé ce script :

    Dans mon index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script language="javascript">
    var page = "accueil.php";	// page par défaut chargée dans l'iframe
    var req = window.location.search ;
    if (req) {
    	req=req.substring(1) ;
    	req = unescape(req) ;
        eval(req);
    }
     
    function Iframe_url() {
    	window.document.frames['central'].location=page;
    }
    </script>

    Dans la page qui s'affiche par défaut dans la frame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script Language="javascript">
    req="page='accueil.php';";
    req = escape(req);
    if (parent.frames.length==0) window.location.href="index.php?" + req;
    </script>
    Et enfin dans ma page qui est appelé directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script Language="javascript">
    req="page='fiche.php?';";
    req = escape(req);
    if (parent.frames.length==0) window.location.href="index.php?" + req;
    </script>
    Ma page se recharge bien là où il faut mais du coup je "perds" ma variable id
    Comment puis je faire pour éviter cela ???

    Je la récupérais comme celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $id=$_GET['id'];
    $reponse=mysql_query("SELECT * FROM fiche WHERE id='$id'") or die (mysql_error());
    $donnees=mysql_fetch_array($reponse);

  5. #5
    Membre confirmé Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Par défaut
    Salut,
    Citation Envoyé par Biglo
    Ca devrait aller mieux ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parent.document.location.href = 'http://www.mes-instants-gourmands.com/index.php';
    Mais j'avoue ne pas avoir tout saisi
    Je ne suis pas du tout convaincu car si on arrive directement sur la page, il n'existe pas de "parent" ! Pour moi, "document" était très bien.

    J'ai rencontré ce pb une fois quand j'utilisais encore des frames et qu'on accédait à la page directement depuis google. Mais j'ai tout viré parce que les frames c'est "Paaaaaas bbiiiiieeeeeennnn" et que si on utilise du SSI ou des includes en php et du CSS, on obtient des banières, menus et pieds de page très légers et faciles à modifier.

    Enfin, bref, ma solution était, en cas de redirection, de fournir directement en paramètre à ma page index, le nom de la page en cours.

    exemple : tu arrives directement sur fiche.php, donc t'as pas le menu puisqu'il est dans le "parent" (d'où l'intéret de ne pas utiliser de frame)
    => tu redirige vers index et tu fournis en GET, le nom de la page à afficher (fiche.php)
    Dans le style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (parent.frames.length < 1)
    	{
    	document.location.href = 'http://www.mes-instants-gourmands.com/index.php?page=' + [nom de la page en cours]; 
           //ici [nom de la page en cours] devra être récupérée et sera égale à "fiche.php?id=1"
    	}
    Sur ta page "index", tu regarde s'il existe une variable "page" dans le GET. Si' oui, c'est une redirection et tu recharge ton iframe avec la bonne page
    Si les caractères "?" et "&" posent pb (certainement d'ailleurs), tu les remplace avant de les envoyer à index qui le remettra en place.
    par ex "?" deviendra "$" et "&" deviendra "!"
    Ainsi ta redirection envoie "index.php?page=fiche.php$id=1!id2=5..."

    index détecte qu'il faut recharger la page fournie plutot que accueil, remplace les caractères pour obtenir
    page = "fiche.php?id=1&id2=5";
    et remplace la page de l'iframe
    iframe.location.href = page;


  6. #6
    Membre confirmé Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Par défaut
    Bon, voici le code quasi complet (j'ai pas traité les problèmes de caractère autres que ceux ennoncés plus haut)
    Met ce bout de code dans une librairie de code JS. Il sera ainsi appelé de toutes les pages nécessitant un rechargement sans devoir l'inclure partout.

    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
     
    // Personellement j'aurais plutot testé l'url de parent car 
    // si ta page est appelée depuis un site qui affiche dans une frame (comme la recherche d'images de Google), c'est raté
    if (parent.frames.length < 1)
    {
         // Récupération du chemin de la page et de ses paramètres
         Chemin = window.location.pathname;
         Param =  window.location.search;
     
         //Remplacement des caractères
         Param.replace("?", "$");
         Param.replace("&", "!");
     
         // Construction du chemin complet
         UrlPage = Chemin + Param;
     
         //Redirection
         document.location.href = 'http://www.mes-instants-gourmands.com/index.php?page=' + UrlPage;
    }
    Dans index uniquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Si "search" n'est pas vide c'est que l'on vient d'une redirection
    if(window.location.search <> "")
    {
         Redir = window.location.search;
         // Nettoyage
         Redir.replace("?page=", "");
         Redir.replace("$", "?");
         Redir.replace("!", "&");
     
         // Modif de l'iframe (syntaxe approximative)
         document.MonIFrame.location.href = Redi;
    }
    On doit pouvoir optimiser les remplacement par des expressions régulières mais je ne les maitrise pas bien en php et encore moins en Javascript.


  7. #7
    Membre confirmé Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Par défaut
    Merci pour ton temps !

    Mais là je t'avoue que je galère .... j'ai donc supprimé le code que j'avais mis en place avant

    J'ai donc créer un fichier redi.js que j'ai mis à la racine de mon site

    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
    if (parent.frames.length < 1)
    {
         // Récupération du chemin de la page et de ses paramètres
         Chemin = window.location.pathname;
         Param =  window.location.search;
     
         //Remplacement des caractères
         Param.replace("?", "$");
         Param.replace("&", "!");
     
         // Construction du chemin complet
         UrlPage = Chemin + Param;
     
         //Redirection
         document.location.href = 'http://www.mes-instants-gourmands.com/index.php?page=' + UrlPage;
    }
    Puis dans mon index j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script language="javascript">
    // Si "search" n'est pas vide c'est que l'on vient d'une redirection
    if(window.location.search <> "")
    {
         Redir = window.location.search;
         // Nettoyage
         Redir.replace("?page=", "");
         Redir.replace("$", "?");
         Redir.replace("!", "&");
     
         // Modif de l'iframe (syntaxe approximative)
         document.MonIframe.location.href = Redi;
    }
    </script>
    Dans la dernière ligne MonIframe correspond au nom de celle-ci .
    Ex : central, ?

    Je reviens à chaque fois sur l'index avec ma page d'accueil et pas la fiche demandé

    Edit : j'ai cette adresse qui s'affiche dans la barre d'ie


  8. #8
    Membre confirmé Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Par défaut
    Salut,

    En fait, je n'ai jamais utilisé d'Iframe, donc je ne sais pas comment les manipuler mais je suppose que c'est come des frame standard.

    Il faut que tu mettes la même instruction que lorsque tu modifies le contenu de ton Iframe depuis un lien de ton menu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML] affichage du contenu des balises 'alt' dans une iframe
    Par etarip dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 11/08/2005, 14h08
  2. [iframe]pb d'affichage dans une iframe
    Par Destampy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/06/2005, 14h55
  3. [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
  4. [C#] Redirection depuis une Iframe
    Par Dozer71 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/05/2005, 10h36
  5. Valider un formulaire contenu dans une iframe
    Par snoopy5.0 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 11h14

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