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 d'URL] incompatibilité de IE


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut [redirection d'URL] incompatibilité de IE
    Bonjour,

    J'ai une page web avec frame.
    Je voudrais que si une personne ouvre la fenêtre en dehors des frames, elle soit redirigée à l'intérieur.

    J'ai donc la structure suivante:
    lib
    +--- test.js
    perso
    +-- test1.html
    +-- test.html

    test.js est un fichier javascript contenant la fonction de redirection:
    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
    function redirect(page) {
    	alert(page);
    	if (parent.frames.length < 1) {
    	document.write("AH PEUR!");
    	document.write(
    		"<frameset rows='20%,*' border=0>"+
    		"<frameset cols='25%,*' border=0>"+
    		"<frame name='pub' src='./test1.html' marginheight=1 marginwidth=1 noresize scrolling='no'>"+
    		"<frame name='banner' src='./test1.html' marginheight=1 marginwidth=1 noresize scrolling='no'>"+
    		"</frameset>"+
    		"<frameset cols='25%,*' border=0>"+
    		"<frame name='menu' src='./test1.html' marginheight=1 marginwidth=1 noresize scrolling='auto'>"+
    		"<frame name='princip' src='./"+page+"' marginwidth=1 marginheight=1 noresize scrolling='auto'>"+
    		"</frameset>"+
    		"<noframes>"+
    		"<body>"+
    		"Please Use a Browser that support Frame!<br>"+
    		"for example: free browser: <a href='http://www.mozilla.org/products/firefox/'><b>Firefox</b></a><br>"+
    		"</body>"+
    		"</noframes>"+
    		"</frameset>"
    	);
    }
    }
    le fichier test1.html est un fichier banal (entête, marge, ...)

    le fichier test.html doit être redirigé à l'intérieur de la frame princip:
    il appelle la fonction de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <meta http-equiv="content-language" content="fr" lang="fr">
    <meta name="generator" content="HTML-Kit">
    <script language="JavaScript" src="../lib/test.js" type="text/javascript"></script>
    <SCRIPT LANGUAGE="JavaScript">
    redirect("test.html");
    </script>
    </head>
    <body>
    BOUH!
    </body>
    </html>

    Ce code marche parfaitement avec firefox... Mais pas du tout avec IE?
    alors que document.write est compatible avec IE
    et parent.frames.length est aussi compatible IE.

    Képassa?

    Avez vous une idée pour rendre mon code compatible avec IE afin que test.html soit redirigé dans la frame "princip"?

    Merci pour votre aide.

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonjour,

    d'abord, je suis surpris que ton code fonctionnne sous FF. Si j'ai bien compris : si l'utilisateur ouvre test1.htm, tu veux qu'il soit redirigé vers la page contenant les frames.

    ----------
    Explication de texte :

    tu as test1.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <html>
    <head>
    <script language="JavaScript" src="../lib/test.js" type="text/javascript"></script>
    <SCRIPT LANGUAGE="JavaScript">
    redirect("test.html");
    </script>
    </head>
    <body>
    BOUH!
    </body>
    </html>
    qui appelle ta fonction redirect(...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function redirect(page) {
       alert(page);
       if (parent.frames.length < 1) {
       document.write("AH PEUR!");
       document.write("   <frameset  rows='20%,*' border=0>...... <noframes><body>....</body></noframes></frameset>");
    }
    }
    d'après document.write(), tu écris le contenu des () dans test1.html à l'intérieur des balises body déjà existantes !! Tu ajoutes des frameset et des balises body à l'intérieur des balises body de test1.html.
    Tu as donc quelque chose de ce style :

    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
     
    <html>
    <head>
    <script language="JavaScript" src="../lib/test.js" type="text/javascript"></script>
    <SCRIPT LANGUAGE="JavaScript">
    redirect("test.html");
    </script>
    </head>
    <body>
     
    BOUH!
        AH PEUR!
       <frameset  rows='20%,*' border=0>...... 
       <noframes>
            <body>....</body>
       </noframes>
       </frameset>
     
    </body>
    </html>
    -----------------------------------------
    ce que je te propose :

    frameset.htm

    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
    <html>
    <head>
    	<title></title>
    </head>
     
    <frameset rows='20%,*' border=0>
       <frameset cols='25%,*' border=0>
         <frame name='pub' src='bla.htm' marginheight=1 marginwidth=1 noresize scrolling='no'>
         <frame name='banner' src='bla.htm' marginheight=1 marginwidth=1 noresize scrolling='no'>
       </frameset>
       <frameset cols='25%,*' border=0>
         <frame name='menu' src='bla.htm' marginheight=1 marginwidth=1 noresize scrolling='auto'>
         <frame name='princip' src='test.htm' marginwidth=1 marginheight=1 noresize scrolling='auto'>
       </frameset>
    <noframes>
    <body>
          "Please Use a Browser that support Frame!<br>
          "for example: free browser: <a href='http://www.mozilla.org/products/firefox/'><b>Firefox</b></a><br>
    </body>
    </noframes>
    </frameset>
     
    </html>
    test.htm

    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
    <html>
    <head>
    	<title></title>
    <script type="text/javascript">
    function RedirPage()
    {
    alert(parent.frames.length);
    if (parent.frames.length < 1)
    	 document.location.href="frameset.htm";  //redirection vers frameset.htm
    }
    </script>
    </head>
     
    <body onload="RedirPage()">
    A rediriger, si n&eacute;cessaire.....
     
    </body>
     
    </html>
    si l'utilisateur ouvre test1.htm (page html sans frame), il sera redirigé vers frameset.htm (fenetre ouvrant test1.htm avec des frames) et test1.htm so'uvre dans la frame "princip".

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    tout cela est bien inutile
    il suffit dans chaque page de mettre un tout petit JS qui teste dans quelle fenêtre il est ci ce n'est pas le nom de ton frame alors tu fait un redirect vers ton frame.

    AMHA je mettrais bien tout les frame à la poubelle.
    c'est bien simple si un site me casse un peut trop les BB avec les frame et autre gadget je le quitte illico.

    la vie serait si bien sans frame

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    d'accord... je conçois maintenant l'absurdité de mon code.
    J'avais déjà fait ce genre de page au début, mais ça signifiait mettre à jour x pages à chaque fois que je changeais un paramètre de frame.

    mon but était de faire une routine (fonction) qui prenne en paramètre le nom de la page et qui mette cette page dans la page avec frame.

    En écrivant frameset.htm je vérouille mon code à une seule frame.
    c'est justement ce que je voudrais éviter.

    je voudrais un frameset.htm qui puisse prendre en entrée n'importe quelle page html passée en paramètre.


    Donc il me faudrait par exemple une fonction qui fonctionne sur plusieurs pages.

    Sinon, remplacer les frame... mais par quoi?

    Un tableau? Il faudrait alors à chaque ouverture de page recharger les images, script et autres fonctionnalités (exemple compteur free, heure free, etc...)
    Ce qui est un peu laborieux.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par sekaijin
    tout cela est bien inutile
    il suffit dans chaque page de mettre un tout petit JS qui teste dans quelle fenêtre il est ci ce n'est pas le nom de ton frame alors tu fait un redirect vers ton frame.
    merci pour ce commentaire lumineux... Et comment fais tu pour une page ne possédant pas de frame pour la mettre dans une certaines frame d'une page possédant des frame?
    Citation Envoyé par sekaijin
    AMHA je mettrais bien tout les frame à la poubelle.
    pourquoi? développe un peu
    Citation Envoyé par sekaijin
    c'est bien simple si un site me casse un peut trop les BB avec les frame et autre gadget je le quitte illico.
    et comment un site pourrait de casser les BB (dixit tu) ? Le site n'a pas de marteau, ni même de main
    Citation Envoyé par sekaijin
    la vie serait si bien sans frame
    requestion: par quoi remplaces-tu les frame?
    un tableau avec le menu en javascript, la bannièer en javascript, etc...
    le tout reloadable à foison?

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Donc si je comprends bien:
    les frame c'est caca
    les tableaux c'est hasbeen

    les CSS XHTML c'est pas supporté par tous les vieux navigateurs

    le PHP faut un support PHP

    Donc ok... mon site avec un menu... je le fais comment?
    Actuellement j'ai des frame, mais bon.... je le remplace par quoi?

    Si je veux imprimer l'intérieur et non les menus , etc... ça se passe comment? même en CSS j'aurais aussi le menu, la bannière (david bannière celui qui se transforme en hulk?)...

    Bref... j'ai assez lu de polémique ou les sans frame et les frame because there is nothing else se prenaient la tête pour des conneries.

    Alors messieurs? Avec ou sans frame.
    Et si vous me dites sans frame, quelle alternative proposez vous?

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    perso je dirais sans frames... mais si ton site existe déja

    il suffit de comparer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (top.location.href==self.location.href)
    ça veut dire que tu n'est pas dans le frame ...
    il suffit alors de rediriger...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    window.location.href=pagedefames.htm
    parent.nomdeframe.location.href=pageframée.htm
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    super c'est le genre de truc que je voulais.
    SAuf qu'il n'enchaine pas sur la deuxième ligne de code, il bloque sur le window.location.href = ...

    bon je vais partir sur un site sans frame et une site avec avec deux langues... ça fait 4 mises à jour!

Discussions similaires

  1. Redirection si URL differente de monsite.com/exemple, possible ?
    Par fartounet dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/07/2007, 09h25
  2. Redirection complète URL
    Par gforce dans le forum Domaines
    Réponses: 2
    Dernier message: 01/06/2007, 13h21
  3. Script: créer un rép. virtuel pour une redirection d'URL
    Par GentooGeek dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 06/10/2006, 18h08
  4. Redirection d'URL avec .htaccess
    Par Mister Nono dans le forum Apache
    Réponses: 5
    Dernier message: 27/07/2006, 08h56
  5. [ Débutant ][ JSP ]Redirection d'URL
    Par leminipouce dans le forum Servlets/JSP
    Réponses: 18
    Dernier message: 23/11/2004, 11h32

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