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 :

Surchage de la fonction onClick d'un lien


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Surchage de la fonction onClick d'un lien
    Bonjour à tous.
    Pour la mesure d'audiance de mon site j'utilise xiti.
    Pour cela je appeler sur tous les liens sortant une fonction xiti sur la fonction onClick des mes liens.

    J'aimerais faire un traitement automatique pour tous mes liens et surcharger leur fonction onClick.

    (Pour tester si c'est un lien sortant je compare le hostname de la page et celui du lien).

    Voici mon code :

    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
    function generateXitiLinkTag() {
     
    		var siteHostName = window.location.hostname;
     
    	    for (i = 0; i < document.links.length; i++) {
    	        var hostname = document.links[i].hostname;
    	        if (hostname != '' && hostname != siteHostName) {
    		        document.links[i].oldClick = (document.links[i].onclick) ? document.links[i].onclick : function() {};
     
    	            document.links[i].onclick = function() {
    	        		click_out();
    		        	this.oldClick();
    	        	};
     
    	        }
     
    	    }
    	}
     
    	generateXitiLinkTag();


    Par exemple pour un lien comme celui-ci :
    Code :

    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.google.fr" onClick="openThePopup('http://www.google.fr',0,0,'yes');return false;">test</a>
    Une popup s'ouvre bien sur google mais ma fenetre principale aussi s'ouvre sous google.

    En espérant avoir été le plus claire possible.

  2. #2
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!

    Citation Envoyé par zizou39
    <a href="http://www.google.fr" onClick="openThePopup('http://www.google.fr',0,0,'yes');return false;">test</a>


    Une popup s'ouvre bien sur google mais ma fenetre principale aussi s'ouvre sous google.
    Bin oui, si tu précises une URL dans le href, c'est normal.
    Un ascenseur est une machine qui passe quand même la moitié de son temps à descendre.

  3. #3
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type='text/javascript'>
     
    function openThePopup(Myurl){
    window.open(Myurl)
    }
    </script>
    <body>
     
          <a href="#" onclick="openThePopup('http:/www.google.fr');return false;">test</a>;
    </body>
    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 !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    ryan -> Le javascript me permet d'ouvrir une popup sur google. Le fait de retourner "false" qui fait que le href n'est pas interprété. De plus, dans le cas ou le client déactive le javascript une popup n'est pas ouverte mais c'est la page qui se redirige vers google.
    (cf : normes w3c http://www.w3.org/TR/WCAG10-HTML-TECHS/)

    (Si j'enlève ma fonction de surchage de l'attribut onclick, mes liens fonctionnent parfaitement)

    Citation Envoyé par SpaceFrog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type='text/javascript'>
     
    function openThePopup(Myurl){
    window.open(Myurl)
    }
    </script>
    <body>
     
          <a href="#" onclick="openThePopup('http:/www.google.fr');return false;">test</a>;
    </body>
    SpaceFrog -> mettre href="#" ne respectent pas les normes w3c et ca le fait pas pour un site pro. De plus, dans le cas ou le client déactive le javascript le lien ne redirigera jamais vers google.

    Mon problème se trouve au niveau de la surchage de l'attribut onclick des liens. Je voudrais juste pouvoir rajouter une instruction.

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type='text/javascript'>
     
    function openThePopup(Myurl){
    window.open(Myurl)
    }
    </script>
    <body>
     
          <a href="javascript:void(0)" oncllick="openThePopup('http:/www.google.fr');return false;">test</a>;
    </body>
    ?
    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 !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par SpaceFrog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type='text/javascript'>
     
    function openThePopup(Myurl){
    window.open(Myurl)
    }
    </script>
    <body>
     
          <a href="javascript:void(0)" oncllick="openThePopup('http:/www.google.fr');return false;">test</a>;
    </body>
    ?
    Tjs le même problème.
    Selon les normes w3c tu n'as plus le droit du mettre du javascript dans l'attribut href.
    Ce qui est logique car si le javascript est désactivé le lien ne marchera plus. (Le browser ne sera pas capable d'interpréter le onclick mais aussi le href)

  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
    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 openThePopup(Myurl){
    window.open(Myurl)
    }
    </script>
    <body>
     
          <a href="http:/www.google.fr" onclick="this.href='#';openThePopup('http:/www.google.fr');return false;">test</a>;
    </body>
     
    </html>
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par SpaceFrog
    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 openThePopup(Myurl){
    window.open(Myurl)
    }
    </script>
    <body>
     
          <a href="http:/www.google.fr" onclick="this.href='#';openThePopup('http:/www.google.fr');return false;">test</a>;
    </body>
     
    </html>
    Ca c'est bon au niveau w3c.
    Mais mon problème se situe au niveau de la surchage de l'attribut onclick dans ma fonction generateXitiLinkTag()

  9. #9
    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
    arf ou j'oubliais... si ton onclick contient déja quelquechose ..
    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 !

  10. #10
    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
    Accrochez vous c'est un peu chaud ...


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
     
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
    		<title>Wazzzaaa</title>
    		<script type="text/javascript"><!--
    function addOnclick(id,func) {
    	myEl = document.getElementById(id);
    	if (typeof myEl.onclick == "function") {
    		oldFunction = myEl.onclick;
    		myEl.onclick = function() {
    			oldFunction();
    			func();
    		}
    	} else {
    		myEl.onclick = func;
    	}
    }
     
     
     
    function popme(myurl){
    window.open(myurl)
    }
    </script>
    	</head>
     
    	<body>
    		<a href="http://www.google.fr" id="btn" onclick="this.href='#';popme('http://www.google.com');return false;" ;>test</a>
    	</body>
     
    </html>
    en fait faut juste concatener un nouveau onclick en prenant soin de conserver l'ancien onclick :d
    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 !

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par SpaceFrog
    Accrochez vous c'est un peu chaud ...


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
     
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
    		<title>Wazzzaaa</title>
    		<script type="text/javascript"><!--
    function addOnclick(id,func) {
    	myEl = document.getElementById(id);
    	if (typeof myEl.onclick == "function") {
    		oldFunction = myEl.onclick;
    		myEl.onclick = function() {
    			oldFunction();
    			func();
    		}
    	} else {
    		myEl.onclick = func;
    	}
    }
     
     
     
    function popme(myurl){
    window.open(myurl)
    }
    </script>
    	</head>
     
    	<body>
    		<a href="http://www.google.fr" id="btn" onclick="this.href='#';popme('http://www.google.com');return false;" ;>test</a>
    	</body>
     
    </html>
    en fait faut juste concatener un nouveau onclick en prenant soin de conserver l'ancien onclick :d
    L'idée est bonne merci. Par contre si ton ancienne fonction fait un return c'est foutu. Pour résoudre le problème j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    document.links[i].onclick = function() {
       ma_nouvelle_fonction();
       return(this.oldClick());
    };

  12. #12
    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
    non en fait c'est ce que je pensais aussi mais le return ne fait que sortir de son niveau ... fais le test la seconde fonction s'executera même si elle est après ...
    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 !

  13. #13
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    <a href="javascript:openThePopup('http://www.google.fr',0,0,'yes');return false;">test</a>

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.google.fr" target="_blank" onClick="openThePopup('http://www.google.fr',0,0,'yes');">test</a>
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

Discussions similaires

  1. [Système] Fonction exec dans un lien et synthaxe
    Par mLk92 dans le forum Langage
    Réponses: 6
    Dernier message: 13/07/2006, 11h45
  2. Appeler un fonction javascrit depuis un lien
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/04/2006, 08h53
  3. Réponses: 4
    Dernier message: 14/02/2006, 17h01
  4. Fonction Recherche(google) et liens morts
    Par cyrille_ dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 4
    Dernier message: 06/01/2006, 12h43
  5. utilisation de la fonction onclick
    Par xave dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/08/2005, 17h26

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