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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    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
    né le 14/12/2006 pis un autre le 25/05/2010

  2. #2
    Membre éprouvé
    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
    Points : 984
    Points
    984
    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 régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    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.
    né le 14/12/2006 pis un autre le 25/05/2010

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    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);
    né le 14/12/2006 pis un autre le 25/05/2010

  5. #5
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    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;

    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  6. #6
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    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.

    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    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

    né le 14/12/2006 pis un autre le 25/05/2010

  8. #8
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    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
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    En l'occurence

    c'est <a href="fiche.php?id=222" target="central">

    donc ca devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.central.location.href = Redi;
    ?
    né le 14/12/2006 pis un autre le 25/05/2010

  10. #10
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Attends, tu utilises un Iframe ou un frameset classique ?
    Dans le 2eme cas fais péter le frameset
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    une iframe et j'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // Modif de l'iframe (syntaxe approximative)
         document.frames['central'].location.href = Redi;
    mais toujours pas
    né le 14/12/2006 pis un autre le 25/05/2010

  12. #12
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Ca commence à me revenir. Effectivement c'est plutot quelque chose de ce genre.
    Pour tes essais, tu peux aussi créer un simple lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="Javascript:document.frames['central'].location.href = Redi;"...>
    En fixant une valeur à Redi en Js sur la même page.

    Quand j'utilisais un frameset local, il fallait que je "remonte" dans ma structure de frame pour, ensuite, redescendre dans la frame concernée.

    Dans ton cas, le Iframe est plutot comme un div, non ?
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    Oui
    voici le code de l'iframe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <td width="549" rowspan="5" valign="top"><iframe src="accueil.php" name="central" width="100%" marginwidth="3" height="100%" marginheight="3" style="border-style:groove" align="middle" scrolling="auto" frameborder="0"></iframe>
    j'ai placé le script entre les balises <head> c'est bien là ?
    né le 14/12/2006 pis un autre le 25/05/2010

  14. #14
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Citation Envoyé par GarGamel55
    j'ai placé le script entre les balises <head> c'est bien là ?
    Par exemple mais faudrait lancer le code après le chargement de la page ou, du moins, après les ligne de création de l'iframe. Sinon le code ne peut modifier un élément qui n'existe pas encore.

    J'ai fait des recherches sur les iframes pour savoir comment les utiliser.
    Bref j'ai réussi à modifier le contenu avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('MonIframe').src = Redi;
    Cela implique d'ajouter un id à l'iframe
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    Merci encore pour ton travail ..

    J'ai donné à l'iframe l'id "central", j'ai placé le script après ma balise </iframe>

    enfin j'ai remplacé la derniere du ligne du code par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('central').src = Redi;
    Mais c'est toujours ma page accueil qui se charge.

    Y aurait t il pas un code à mettre dans ma page accueil pour lui de se charger uniquement par défaut ?
    né le 14/12/2006 pis un autre le 25/05/2010

  16. #16
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Ta page est en ligne ?
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    né le 14/12/2006 pis un autre le 25/05/2010

  18. #18
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Je remarque 2 choses :

    1 - L'URL qui est reconstruite contient des caractères qui ne devraient pas y être :

    http://www.mes-instants-gourmands.com/index.php?page=/fiche.php?id=229

    2 - L'id que tu as mis sur ton iframe est "central " (y a un espace de trop)
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  19. #19
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Dans le javascript de redirection (redi.js), tu peux ajouterjuste avant la redirection ?
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

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

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    j'ai corrigé l'id de l'iframe,

    J'ai mis alert(UrlPage); dans la fichier redi

    je ne trouve toujours pas !!
    né le 14/12/2006 pis un autre le 25/05/2010

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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