-
Google Adsense & Ajax
par Skreo, le 21 Janvier 2007 à 13:52J'ai décidé d'utiliser la régie Google Adsense pour les publicités affichées sur EklaBlog.com (qui sortira dans 1 ou 2 mois). Le problème, c'est que Google n'a pas prévu l'utilisation des annonces sur des pages chargées par Ajax.
Au début, 2 solutions se présentaient à moi :
- Essayer d'inclure normalement le code de l'annonce : Au premier chargement de la page, pas de problème, mais elle ne s'affiche plus quand le contenu de la page change, car le script ne peut plus être exécuté...
- Utiliser une iframe (eurkk... pas valide...) contenant la pub, rechargée à chaque changement du contenu de la page
Il faut savoir que la page javascript de google (http://pagead2.googlesyndication.com/pagead/show_ads.js) affiche une iframe contenant les annonces avec la fonction document.write, fonction native de javascript. L'astuce consiste à modifier cette fonction, pour gérer l'affichage de la pub.
On va gérer l'affichage de la pub par une fonction qui sera appelée à chaque chargement de page par Ajax. On verra cette fonction après.
Enfin, le dernier problème, c'est que Google n'autorise pas plus de 3 affichages de publicités par page. Et bien sûr, dans un site Ajax, il n'y a pas de rechargement complet de page. Donc à priori, la pub s'affiche au chargement de la page, et aux 2 prochains changements du contenu de la page. Le truc c'est de supprimer toutes les variables créées par Google. Ainsi, Google croit toujours qu'il en est à la première pub.
Voici le code javascript de la fonction qu'on va utiliser pour afficher la pub :<script type="text/javascript">
// Affiche la publicité Google
function showAdGoogle(){
// On supprime toutes les variables créées par Google :
for(i in window){
if(i.substring(0,7)=="google_"){
window[i] = null;
}
}
// Variables fournies à google pour l'apparence de la pub
google_ad_client = "pub-8434410332296691"; // Id de l'utilisateur
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_color_border = "0000FF";
google_color_bg = "DDDDFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
var s = document.createElement('script'); // On crée une balise script pour charger le script de Google
s.type = 'text/javascript';
s.src="http://pagead2.googlesyndication.com/pagead/show_ads.js";
document.body.appendChild(s);
}
// Redéfinition de document.write pour l'affichage de la pub Google Adsense
document.write = function(t){
var d = document.getElementById("content_pub_google");
if(d) d.innerHTML += t;
else document.body.innerHTML += t;
}
</script>
Et dans la page, pour afficher la pub :
<div id="content_pub_google" style="width: 468px;"></div>
<script type="text/javascript">
showAdGoogle();
</script>
Lorsque la page est chargée par Ajax, il faut passer le code "showAdGoogle();" dans des balises <js> par exemple, et traiter le xml pour exécuter le js. Et bien sûr il ne faut pas oublier de remettre le div content_pub_google ^^
Pour ça, rien de plus simple : si la variable contenant xml s'appelle reponse :
for(var i=0;i<reponse.getElementsByTagName("js").length;i++)
setTimeout(reponse.getElementsByTagName("js")[i].firstChild.nodeValue, 0);
Voilà, j'espère que ce petit tuto pourra aider quelqu'un ;-)
Partager cet article :

Tags : google, ajax pub
Suivre le flux RSS des commentaires de cet article
Revenir à la liste des articles
-
Commentaires
3bricedenice292921 Janvier 2007 à 21:26en plus IE supporte toujours par la transparence mais je sais pas pour IE 75bricedenice292927 Janvier 2007 à 11:46Oui c'était la transparence des png comme je fais du graphisme je demandais ^^"
Je vais essayez de trouver ton logiciel là
Mais avec firefox ça marche impec' :-)6bricedenice29296 Février 2007 à 22:39De la daube je dis IE 7 lol Opéra vais l'essayer mais je reste sous firefox7bricedenice292911 Février 2007 à 15:37encore moi
il y a une grosse faille dans google
c pas du php mais je sais pas si tu connais
je sais pas comment et où sont les mots de passe de murties mais avec google on peut les trouvés avec un index of nom du site passwd donc si tu connaisais pas je le dis car il vaut mieu tt protégé
mais je sais pas si ton systeme de mot de passe marche comme ça donc voilà je dis meme si ça te sert a rien
dsl pour les fautes mais suis ac la psp donc la flemme de bien écrire ^^9bricedenice292911 Février 2007 à 18:46J'ai aps chercher j'ai trouvé ça
Je connaisais le "Artiste" last modified mp3 "index of" -html -htm -php -asp
Et donc j'ai voulus testé un truc et hop ça a donner les mdp d'un site O_o
Donc je voulais demander quand même mais bon je préviens les potes webmasters que je connais comme y en a certain qui sont un peu "con" ben je leur ai dit aussi ^^"10bricedenice292919 Mars 2007 à 19:32Mais bon ça sert a rien mais en poussant les recherches on peut trouver des choses ...
Ajouter un commentaire

Haut de page
Mais tu oublies de mentionner que il ne faut pas avoir à utiliser document.write par la suite.
En effet, on ne peut pas redéfinir la fonction à sa valeur native de manière efficace sur tous les browsers en même temps.
Comme d'hab ca marche sous firefox et opera, et c'est IE qui soule... Merci microsoft d'avoir su mettre à jour ie sans pourtant sacrifier sa nullité.
C'est neuf c'est beau (hum !) mais c'est toujours aussi foireux.
www.getfirefox.com