[Javascript] utilité des balises

Je suis tombé sur un gars qui me soutient sans me donner d’explications que ce code là marche

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("xxxxxxxx");
pageTracker._trackPageview();
} catch(err) {} 
</script>

alors que j’avais écrit

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

try{
var pageTracker = _gat._getTracker("xxxxxxxx");
pageTracker._trackPageview();
} catch(err) {} 
</script>

J’avais juste viré la fermeture/ouverture de la balise script que je jugeais inutile.

Selon lui, mon code ne marche pas avec chiffre à l’appuie. Alors… soit j’ai raison soit ya une notion en javascript que j’ignore.

J’aimerais bien un réponse.

Il a raison, ton code ne marche pas. C’est à cause du document.write qui est fait “à la fin de la balise script” suivant les navigateurs. T’essaie donc d’accéder à _gat qui est initialisé dans le script js chargé par le document.write, et ca peut potentiellement se viander.

De toute facon, au niveau de l’insertion JS de Analytics, google conseille maintenant l’insertion en asynchrone, voir:
http://code.google.com/intl/fr/apis/analytics/docs/tracking/asyncUsageGuide.html

edit: de toute facon, pour voir si le code marche ou pas, suffit de rajouter une alert JS dans le catch. Si l’alerte poppe c’est qu’effectivement il y a un problème.

hahaha t’es serieux ? un document.write ne se fait pas immédiatement mais qu’a la fin de la balise ? ok… c’est marqué ou ce truc à part DMC ?

C’est marqué nulle part, c’est ca qui est drôle. Ca dépend des navigateurs et du flushing JS. J’ai constaté le problème il y a déjà un bout de temps (à l’époque ou Ajax n’était encore que naissant, et on parlait pas JSON): je communiquais des résultats de recherche avec une page web, et j’étais obligé de faire du padding dans le JS pour avoir un code de 512 octets, sinon c’était pas interprété de suite.

On a le même genre de problème avec des

sous IE6: elles ne sont rendues qu’à la fin, lorsque le browser trouve la fermeture de table.

Presque partout…

Clair, je bosse sur une magnifique appli qui tourne sur ie 6/7. ie6 n’est pas mort (helas)

Globalement, ça tend à disparaître. Même la caisse d’épargne par exemple (40k utilisateurs) passent à seven et ie 8 à la fin de l’année. Ouais bon ça a interet à sortir à temps :stuck_out_tongue: