Atlas et google adsense : bug avec la methode Date.parse
Attention ! Si vous utilisez Microsoft Ajax RC avec Google adsense vous aurez une erreur JavaScript et vos annonces adsense ne fonctionneront plus.
Tout à l'heure, Laurent Kempé est venu me voir via msn pour un problème JavaScript : lorsqu'il tentait de mettre des pubs Google Adsense avec Microsoft Ajax (Atlas) sur TechHeadBrothers il obtenait une exception "Sys.FormatException". Il m'explique rapidement le contexte et me montre qu'il n'est pas le seul puisque le même problème est décrit ici : Google Ads broken (forum www.asp.net). Après avoir investi j'ai trouvé une solution.
Google utilise la méthode Date.parse qui est native en JavaScript. Malheureusement Microsoft Ajax Library RC surcharge cette méthode et elle n'a plus exactement le même comportement qu'avant, heureusement ils ont enregistré l'ancienne méthode dans Date._jsParse. Voici donc le bout de code qui permet de réparé le problème. Il faut l'inclure avant la premiere inclusion du script Google.
Date.__cyril_parse = Date.parse;
Date.parse = function(s){
try {
return Date.__cyril_parse(s);
} catch (e){
var d = Date._jsParse(s);
if (d) {
return d;
} else {
throw e;
}
}
}
Explication : la première ligne sauvegarde la méthode Date.parse de Microsoft Ajax Library, ensuite la seconde ligne surcharge la méthode Date.parse essaye d'utiliser la méthode de Atlas si elle plante on essaye d'utiliser la méthode Date.parse original (sauvegardé par Atlas dans Date._jsParse).
C'est donc un BUG très critique qu'il faut absolument corriger pour la RTM !!!