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 :

Détection de la page source et redirection


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut Détection de la page source et redirection
    Bonjour à tous.
    Je cherche, je cherche mais je ne trouve pas !
    Je vous expose mon problème :

    Dans mon site web j'utilise des iframe, vous allez me dire : "bouuuuuu c'est pas bien c'est dépassé, pourrit et tout et tout..." je sais mais je ne suis pas assez bon pour passer outre... Je poursuit donc, j'aimerais donc détecter la page qui aura redirigé l'internaute vers cette fameuse iframe ! (en réalité CES iframes ) et le rediriger directement vers la page mère.

    En gros si il arrive sur page2_frame et qu'il ne vient pas de page1 ou page3 il est redirigé vers page2 !

    Oui oui je sais c'est de la triche mais bon j'ai des petits problèmes de jquery et donc j'ai du tricher avec les iframes

    J'ai déjà travailler un peu sur la détection du navigateur web avec le code suivant :

    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
     
    <SCRIPT language="JavaScript">
    <!--
    var browserName=navigator.appName; 
     if (browserName=="Microsoft Internet Explorer")
     {
      alert("Bonjour, Votre navigateur est Internet Explorer. Ce navigateur n'est pas pleinement compatible avec ce site Internet. Pour votre confort merci de changer de navigateur (Firefox, Chrome ou Safari). Vous pouvez poursuivre et essayer en mode compatibilité.");
     }
     else{
      if (browserName=="Opera")
     {
      alert("Bonjour, Votre navigateur est Opera. Ce navigateur n'est pas pleinement compatible avec ce site Internet. Pour votre confort merci de changer de navigateur (Firefox, Chrome ou Safari). Voulez-vous quand même poursuivre ?.");
     }
     else{
     
    }
    }
    //-->
    </SCRIPT>
    Il me semble donc que ma requête est tout à fait possible.
    Je vous remercie par avance pour votre aide et si ce que je cherche à faire n'est pas possible merci de m'expliquer comment utiliser 3 sources jquery dans une même page car le mode compatibilité jquery ou l'on remplace $ par jquery ne pas pleinement aidé...

    Pour info, mon site : http://www.b-website.com (d'ailleurs les remarques sont bienvenues )

    Merci à tous et bonne soirée !

    briSSo

  2. #2
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu peux essayer de tester le document.referrer pour effectuer ou non une redirection, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!/page(1|3)/.test(document.referrer)){
        top.location.replace('page2.html');
    }/
    Bien sûr, ce n'est qu'un exemple qu'il faudra adapter à ton code et à tes besoins.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut
    Bonjour et merci pour votre réponse
    Ne m'y connaissant pas trop (du tout) en js j'ai donc chercher du côté document.referrer et j'ai trouvé ce code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script language="JavaScript"><!--
    var ref = document.referrer;
    if (ref.indexOf('www.b-website.com') != -1)
    {}
    else
    window.location.href = 'http://www.b-website.com/artwork.html';
    //--></script>
    Si j'ai bien compris cela signifit que si la page précédente ne contient pas dans son url 'www.b-website.com' alors l'utilisateur est redirigé vers la page qui contient l'iframe. Est-ce bien cela ?
    Car je viens d'essayer et cela n'a pas fonctionné.
    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut
    alors je cherche toujours et je commence à comprendre je pense que je devrais faire serait quelque chose comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript">
    <!--
    function redirectParent()
    {
    if window.location.href= 'http://www.b-website.com/artwork.html';
    {
    //ne rien faire//
    }
    else window.parent.location.href = 'http://www.b-website.com/artwork.html';
    }
    // -->
    </script>
    Est ce que ce code est correct et est ce que cela vous semble logique ?
    Merci

  5. #5
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tout d'abord, quelques corrections sur le code que tu as trouvé
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language="JavaScript">
    language est un attribut qualifié de deprecated, c'est-à-dire qu'il est obsolète et à éviter.
    Ensuite, cet attribut sert à forcer la version de JavaScript que tu souhaites utiliser, or tu ne précises pas de version, donc son utilité devient assez proche de nulle.
    Enfin, l'attribut type, qui sert à déterminer le type mime du script en question et dont la valeur doit être "text/javascript" est quant à lui required, donc obligatoire
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">

    Ensuite, dans le code, tu testes la présence d'un motif dans une chaine et ne fait rien si le motif est trouvé et utilise en fait uniquement le else, ça me semble donc plus cohérent de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var ref = document.referrer;
    if (ref.indexOf('www.b-website.com') == -1){
        window.location.href = 'http://www.b-website.com/artwork.html';
    }
    et pour expliquer ce code, tu recherches dans la chaine renvoyée par document.referrer (supposée être l'URL dont tu viens) la présence de la chaine passée en paramètre de indexOf.
    Si cette chaine est trouvée, indexOf te renverras la position du premier caractère de la chaine recherchée dans la chaine de référence ou -1 si la chaine recherchée n'est pas présente.
    Dans ton code, si la chaine recherchée n'est pas présente, tu fais une redirection vers l'URL affectée à location.href. Or dans ton cas, il s'agit d'une iframe et si j'ai bien compris, tu souhaites faire la redirection sur la page principale, il faut donc utiliser top.location (tu sais, comme dans l'exemple que je t'ai montré ).
    Ensuite, la façon de procéder va dépendre de beaucoup de choses : d'où le code est appelé (page principale ou iframe), à quelle frame il s'adresse, si les frames sont sur le même domaine etc. Et là, sans code, point de salut !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut
    Oulala, tu me fais peur !
    Alors pour répondre, enfin préciser :

    Mes iframes sont toutes sur mon domaine, malheureusement le référencement des iframes étant ce qu'il est, sur google par exemple je trouves mes pages iframe référencées et donc lorsque je clique dessus, je me trouve sur l'iframe mais pas sur la page mère...problème bien connu et bien ennuyeux...

    Mon souhait est donc de faire en sorte que lorsque que la page parent (si j'ai bien compris cela s'appel comme ça) ne contient pas l'url www.b-website.com alors il y a une redirection automatique vers la page mère de mon iframe.

    Si j'ai bien compris d'après ce que j'ai pu lire et ce que tu m'as dit, mon script devra être placé dans page iframe pour rediriger vers la page mère (avec top.location ).

    Correct or not correct...that is the question...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut
    Me revoilà,
    j'ai essayé ton code et cela ne fonctionne pas. J'ai essayer de la modifier en m'inspirant de différents code que j'ai pu trouver sur le web je pense être dans le faux aussi bien au niveau de l'écriture en js que ds la justesse des if else...

    Le code que vous me conseillez pourrait-il se traduire par :
    si la page précédente contient dans son URL www.b-website.com alors rediriger vers www.b-website.com/mapagemère.html

    Si oui je voudrais dire l'inverse : si la page précédente ne contient pas l'url www.b-website.com alors rediriger vers www.b-website.com/mapagemère.html

    Dans ce cas je ne risque pas de boucle (comme j'ai pu en avoir en m'essayant au htaccess) car la seul solution pour arriver sur la frame et non la page mère est d'arriver d'un moteur de recherche ou de saisir l'adresse manuellement.

    Merci

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut
    Bonjour,
    je me suis re-penché sur mon problème et je pense avoir trouvé un solution avec la détection de l'url du navigateur.
    Cela me parrait même mieux.
    Je voudrais donc que si l'url du navigateur est celle de la frame alors il y ai une redirection vers la page contenant la frame.
    Ne m'y connaissant toujours pas javascript (après quelques essais j'ai renoncé), je me tourne donc vers vous pour solliciter votre aide.
    J'ai recherché sur google et j'ai trouvé pas mal de choses mais rien n'a fonctionné jusqu'à présent.
    un exemple de ce que j'ai pu trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    };
    if (this.markCurrent) {
    var links = this.menu.getElementsByTagName("a");*
    for (var i = 0; i < links.length; i++)
    if (links[i].href == window.parent.frames.location.href* ) {
    links[i].className = "current";
    break;
    }
    }
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript">
        if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) {
           location.reload()
        }
        else if(/^http:\/\/co.siteeps.com\/hp\//.test(window.location)) {
           //do something else
        }
    </script>
    Pourriez m'aider svp.
    Merci par avance.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut
    Bonjour,
    mon problème est toujours d'actualité.
    Je n'arrive pas à supprimer mes iframes car j'utilise du jquery et le mode non conflit me pose problème.

    Il n'existe donc aucun code JavaScript susceptible de répondre à mon besoin ?
    Merci par avance.

    http://www.b-website.com page artwork et photos avec deux iframes...c'est vraiment "moche" et ça me tracasse...

  10. #10
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Essaie ce code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    if(parent.frames.length==0)window.top.location.replace('la page_contenant_l_iframe.html');
    </script>

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut
    Ahhhhhh...je suis content !!
    Merci beaucoup !
    Bonne continuation à toi Eric2a.

    PS: si tu a des remarques pour améliorer le tout je suis largement preneur !

  12. #12
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Juste une seule remarque :
    Tu pourrais afficher le texte déstiné aux utilisateurs d'Internet Explorer dans le document et non d'ouvrir une boite de message d'alerte.

    Pour ce faire, il suffit de placer le message à un endroit précis entouré par les commentaires conditionnels. Ces derniers étant propres à Internet Explorer, le message sera lu et interpreté par ce navigateur uniquement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <!--[if IE]>
    <div id="alertIE">
    <p>Bonjour, Votre navigateur est Internet Explorer. Ce navigateur n'est pas pleinement compatible avec ce site Internet. Pour votre confort merci de changer de navigateur (Firefox, Chrome, Safari ou Opéra). Vous pouvez poursuivre et essayer en mode compatibilité.</p>
    </div>
    <![endif]-->
    En prenant soint de "styler" le conteneur alertIE. Un exemple basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #alertIE {
    	font-size:150%;
    	color:red;
    	font-weight:bold;
    }

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Points : 98
    Points
    98
    Par défaut
    En effet, c'est moins disgracieux... merci beaucoup !

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

Discussions similaires

  1. Page Sources Java libres - participez ici
    Par Mickael Baron dans le forum Format d'échange (XML, JSON...)
    Réponses: 109
    Dernier message: 26/06/2011, 17h34
  2. Nouvelle page sources Delphi => participer, commentaires.
    Par NoisetteProd dans le forum Contribuez
    Réponses: 1
    Dernier message: 12/01/2009, 18h28

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