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 :

Tracking adsense : ajouter un événement sur une iframe


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 55
    Points
    55
    Par défaut Tracking adsense : ajouter un événement sur une iframe
    Bonjour, je suis en train de faire un petit script de tracking des clics Adsense. Je m'inspire de ce script.

    Voici mon code javascript :

    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
    function log_adsense(nom_iframe){
    	bug = new Image();
    	bug.src = '/etc/log_adsense.php?ref='
    	+ document.location
    	+ '&url=' + window.status
    	+ '&name=' + nom_iframe;
    }
     
    window.onload = function(){
    	var elements;
    	elements = document.getElementsByTagName("iframe");
    	for (var i = 0; i < elements.length; i++){
    		if(
    			(elements[i].src.indexOf('googlesyndication.com') > -1) ||
    			(elements[i].src.indexOf('googleadservices.com') > -1) ||
    			(elements[i].src.indexOf('googleads') > -1)
    		){
    			elements[i].onmouseup = log_adsense(elements[i].id);
    		}
    	}
    }
    Le fichier log_adsense.php se contente d'écrire quelques données dans un fichier texte.

    La fonction log_adsense fonctionne très bien, par contre c'est le reste qui coince.

    Quand je charge une page qui contient 2 ensembles adsense, le fichier texte est déjà rempli, alors que j'ai pas cliqué sur les annonces.

    En c'est comme si il ne prenait pas en considération mon évènement onmouseup.

    Comment faire ?

    Merci

  2. #2
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    un truc dans ce genre là devrait faire l'affaire:
    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
    function log_adsense(){
    	bug = new Image();
    	bug.src = '/etc/log_adsense.php?ref='
    	+ document.location
    	+ '&url=' + window.status
    	+ '&name=' + this.id;
    }
     
    window.onload = function(){
    	var elements = document.getElementsByTagName("iframe"),
    	    elem = null; // temporaire
    	for (var i = 0, il = elements.length; i < il; i++){
    		elem = elements[i];
    		if(
    			(elem.src.indexOf('googlesyndication.com') > -1) ||
    			(elem.src.indexOf('googleadservices.com') > -1) ||
    			(elem.src.indexOf('googleads') > -1)
    		){
    			elem.onmouseup = log_adsense;
    		}
    	}
    }
    J'en ai profiter pour optimiser un peu ta boucle. Sur 2 élements ça se voit pas trop, mais si tu fais toutes tes boucles comme tu as fait celle là, tu finira par avoir des problèmes de lenteur.

    En ce qui concerne le problème, c'est que tu n'assignes pas de fonction à l'évènement onclick mais tu execute la fonction et tu assigne la valeur de retour (qui est undefined très certainement) à l'évènement. ça foire, normal. Il faut que tu passes une référence, ce que j'ai fais ici.

    Au fait j'ai pu virer l'argument, puisque le this dans la fonction "log_adsense" pointe vers la même chose que le "elements[i]" au moment de l'itération. C'est pas très clair, mais c'est pas un comportement évident ces histoires en JS.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Ok, merci pour ton aide.

    J'ai une question : comment faire pour assigner à un évènement (ici : onmouseup), une fonction en indiquant des paramètres à cette fonction ?

    Parce que ma_fonction(param) ne fonctionne pas puisque comme tu l'as dit, ça exécute la fonction.



    Sinon pour en revenir à mon problème, j'ai essayé avec ton code. Lors du chargement d'une page, rien n'est inscrit dans le fichier texte, jusque là ça va.

    Par contre quand je clique dans une iframe adsense (sur le lien où dans le vide, sur le texte de description...), rien n'est enregistré dans le fichier texte.

  4. #4
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    normal, tu ne peux pas mettre de onclick sur une iframe. Il faut mettre l'évènement dans la page contenue dans l'iframe auquelle tu ne peux pas accéder pour des raisons de sécurité (c'est un autre domaine).

    En clair : c'est pas possible avec onclick. Test avec onfocus comme dans l'article original.

    pour passer des paramètres il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elem.onfocus = function () {
        maFonction(mesParametres);
    };

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    on focus ne fonctionne pas non plus

    Ça veut dire qu'il est impossible de tracker les clics adsense tant que google utilisera des iframe pour afficher ses annonces ?

    Il n'y a vraiment aucun moyen de vérifier le nombre de clics ?

  6. #6
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    Je suis pas le roi des iframes, mais honnetement je pense que c'est impossible.

    Si quelqu'un d'autre à mieux… ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Je ne suis pas un as du javascript, mais si j'encapsule toutes les annonces adsense dans un div, et que j'ajoute un événement onfocus dessus, ça pourrait fonctionner ?

    (pour cela faudrait qu'il y ai une sorte d'héritage inverse dans les événements : onfocus sur l'iframe provoque onfocus aussi sur la div qui la contient).

  8. #8
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    non ça marche pas ça. Déjà essayer il y a quelques temps

    En plus l'évènement focus ne se propage pas :p

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/06/2011, 13h20
  2. Ajouter un tooltip sur une image
    Par K4sh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 14/10/2005, 19h12
  3. Ajouter du texte sur une vidéo
    Par ChIcKeN78 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 01/06/2005, 10h43
  4. ajout de colonnes sur une selection
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/08/2004, 17h44
  5. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53

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