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 automatique lors d’un clic


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut Redirection automatique lors d’un clic
    Bonjour,

    Je réalise actuellement un script en php et je suis bloquée sur une fonction que je pense quelle devra être utilisée avec AJAX. Pour être honnête je suis nouvelle dans le développement avec AJAX et malgré quelques recherches sur google je n’ai pas trouvé un exemple similaire à mon cas.

    Je vous explique et j’espère que je trouverais quelqu’un qui pourra m’aider.

    Voici par exemple mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="http://www.google.com">google</a>, <a href="http://www.yahoo.com">yahoo</a>, 
    <a href="http://www.msn.com">msn</a>
    J’aimerais que lors d’un clic sur un lien (google par exemple) ouvrir la page http://www.mondomaine.com/url/http://www.google.com au lieu de http://www.google.com

    C’est un système similaire à celui utilisé par linkbucks mais après la consultation du code http://www.linkbucks.com/Webservices/jsParseLinks.aspx je n’ai toujours pas trouvé une solution.

    Merci d’avance pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    ca me fait penser a du iFrame, as tu creusé de ce coté la?

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Merci gototog pour ta réponse mais je ne vois pas comment cela peut être réaliser à l’aide d’une iFrame.

  4. #4
    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,

    Pas besoin d'AJAX. La fonction ci-dessous modifie l'URL du lien cliqué...

    Code xhtml : 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 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<title>Test</title>
    		<script type="text/javascript">
                            function redirect(a){
                                    a.href='http://www.mondomaine.com/url/'+a.href;
                                    return true;
                            }
                    </script>
    	</head>
    	<body>
    		<ul>
    			<li><a href="http://www.google.com/" onclick="redirect(this);">Google</a></li>
    			<li><a href="http://www.yahoo.com/" onclick="redirect(this);">Yahoo</a></li>
    			<li><a href="http://www.msn.com/" onclick="redirect(this);">MSN</a></li>
    		</ul>
    	</body>
    </html>

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Merci Eric2a pour ton aide mais cette solution n’est pas parfaite pour mon problème vu le code des liens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.google.com/">Google</a>
    Ne doivent pas être changer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.google.com/" onclick="redirect(this);">Google</a>
    En tout cas mille merci

  6. #6
    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
    Essaie ceci...
    Code xhtml : 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
    29
    30
    31
    32
    33
    34
    35
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<title>Test</title>
    		<script type="text/javascript">
                            var addLoadListener=function(){
                                    if(window.addEventListener)return function(func){window.addEventListener('load',func,false);}
                                    else if(document.addEventListener)return function(func){document.addEventListener('load',func,false);}
                                    else if(window.attachEvent)return function(func){window.attachEvent('onload',func);}
                                    return function(func){if(typeof window.onload!='function')window.onload=func;else{var oldonload=window.onload;window.onload=function(){oldonload();func();};}}
                            }();
                            addLoadListener(
                                    function(){
                                            var i,lnk,elt=document.getElementById('liens_a_rediriger');
                                            lnk=elt && elt.getElementsByTagName('a');
                                            if(!lnk)return;
     
                                            for(i=0;i<lnk.length;i++){
                                                    lnk[i].onclick=function(){
                                                            return window.open('http://www.mondomaine.com/url/'+this.href),false;
                                                    };
                                            }
                                    }
                            );
                    </script>
    	</head>
    	<body>
    		<ul id="liens_a_rediriger">
    			<li><a href="http://www.google.com/">Google</a></li>
    			<li><a href="http://www.yahoo.com/">Yahoo</a></li>
    			<li><a href="http://www.msn.com/">MSN</a></li>
    		</ul>
    	</body>
    </html>
    Une fois le document chargé, le script cherchera les liens afin de leur attacher l'événement "onclick".

    La recherche s'effectue dans l'élement HTML (ici <ul id="liens_a_rediriger"> ... </ul>").

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Merci Eric2a j’apprécie ton aide.

    En faite la fonction doit être utilisée sans toucher au code HTML.

    J’ai pu trouver la solution 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>LInk</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript" >
    $(document).ready(function(){
    	$("a").click(function(){
    		$(this).attr("href", "http://www.mon-domaine.com/url/" + $(this).attr("href"));
    	});
    });
    </script>
    </head>
     
    <body>
    <a href="http://www.google.com">google</a> 
    <br/>
    <a href="http://www.yahoo.com">yahoo</a> 
    <br/>
    <a href="/">Accueil</a> | <a href="/faq.html">FAQ</a> | <a href="test.html">Test</a>
    </body>
    </html>
    Cette solution marche très bien cependant y a-t-il une amélioration de cette fonction pour quelle ne soit pas exécuter sur les liens locaux (Accueil, FAQ, Test). Aussi définir les domaines à exclure (Yahoo par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.google.com">google</a>
    Résultat : http://www.mon-domaine.com/url/http://www.google.com

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.yahoo.com">yahoo</a>
    Résultat : http://www.yahoo.com

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/">Accueil</a>
    Résultat : http://www.domaine-du-site.com

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/faq.html">FAQ</a>
    Résultat : http://www.domaine-du-site.com/faq.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="test.html">Test</a>
    Résultat : http://www.domaine-du-site.com/test.html

    Merci pour toute amélioration possible.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Rajoute juste un petit IF pour tester si le lien commence par
    "http://" mais a ce compte fais attention de ne pas le mettre
    en début de tes liens locaux ...

  9. #9
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    La fonction doit être placée sur n’importe quel page/domaine/Administrateur sans toucher au code HTML.

    Donc il se peut que des admins mettent des http:// devant leurs liens locaux.

    Je ne suis pas fort niveau syntaxe donc je me suis tournée vers vous pour m’aider à ce sujet.

    Ma fonction initiale est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript" >
    $(document).ready(function(){
    	$("a").click(function(){
    		$(this).attr("href", "http://www.mon-domaine.com/url/" + $(this).attr("href"));
    	});
    });
    </script>
    La fonction doit rediriger tous les liens de la page en cours vers le lien http://www.mon-domaine.com/url/+lien à l’exception des liens déclarés dans une liste (liens à exclure) aussi exclure tous les liens appartenant au domaine en cours.

    Merci d’avance pour toute bonne suggestion.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script type="text/javascript" >
    $(document).ready(function(){
    	$("a").click(function(){
    		var url = $(this).attr("href")
    		if ( (url.indexOf("http://") == 0) 
    		&& (url.indexOf("mon-domaine") < 0) )
    			$(this).attr("href", "http://www.mon-domaine.com/url/" + url);
    	});
    });
    </script>
    Ensuite tu peux ajouter sur le même principe que la deuxième condition et une boucle for pour tester une liste d'exclusion, ou utiliser jQuery.inArray, ou même utiliser les expressions régulières.

Discussions similaires

  1. [JSP] Redirection automatique
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 08/08/2011, 10h24
  2. [Référencement] Redirection automatique si page manquante
    Par camoulox dans le forum Référencement
    Réponses: 1
    Dernier message: 07/10/2005, 15h43
  3. Redirection automatique lors d'une sélection dans un Select
    Par MiJack dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/12/2004, 18h09
  4. Réponses: 2
    Dernier message: 12/07/2004, 11h43
  5. Réponses: 2
    Dernier message: 15/06/2004, 11h22

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