Gregory Posté 19 Mai 2008 Posté 19 Mai 2008 Bonjour, Voila j'ai un problème avec IE avec ce script, sous firefox c'est niquel. Il pose problème avec le "setHTML" et je trouve pas de solution. J'utilise un script général au site, qui va, suivant l'url, injecter le bon code google Analytics, dans la page. var adresse = document.URL.split("/"); var url = (adresse[2]); var scriptgoogle = new Element('script', {'src':'http://www.google-analytics.com/urchin.js', 'type':'text/javascript'}).injectAfter($('langmenu')); if (url == 'www.nom-de-domaine.com'){ var keygoogle = new Element('script', {'type':'text/javascript'}).setHTML('_uact = "UA-xxxxxxx-xxx"; \n urchinTracker();').injectAfter(scriptgoogle); } else if (url == 'www.nom-de-domaine.org') { var keygoogle = new Element('script', {'type':'text/javascript'}).setHTML('_uact = "UA-xxxxxxx-yyy"; \n urchinTracker();').injectAfter(scriptgoogle); } Merci de votre aide! Gregory
Ifmy Posté 19 Mai 2008 Posté 19 Mai 2008 Bonjour, est-il possible d'avoir une page d'exemple ? Le code ne semble pas erroné a première vue.
Gregory Posté 20 Mai 2008 Auteur Posté 20 Mai 2008 Oui bien sur! voici l'url : http://www.malta-quality-schools.org/fr/home.htm "New element[...].setHTML[...] a la valeur NULL ou n'est pas un objet" Merci pour votre aide!
Ifmy Posté 20 Mai 2008 Posté 20 Mai 2008 (modifié) En donnant un identifiant aux éléments créés et en le ciblant ainsi $('element').setHTML... ? (je sais, c'est tordu lol) Je ne pense pas non plus que le injectAfter soit une précaution utile. on va trouver Modifié 20 Mai 2008 par Ifmy
Gregory Posté 20 Mai 2008 Auteur Posté 20 Mai 2008 (modifié) Merci bien pour ton aide en tout cas! j'ai essayé en enlevant cette ligne : //var keygoogle = new Element('script', {'type':'text/javascript'}).setHTML('_uact = "UA-2548102-11"; \n urchinTracker();').injectAfter(scriptgoogle); et en remplacant par ca : var keygoogle = new Element('script', {'id':'goo','type':'text/javascript'}).injectAfter(scriptgoogle); $('goo').setHTML('_uact = "UA-2548102-11"; \n urchinTracker();'); Sur firefox toujours aucun problème mais IE... Modifié 20 Mai 2008 par Gregory
Ifmy Posté 20 Mai 2008 Posté 20 Mai 2008 var url = (adresse[2]); var url = adresse[2]; J'avais pas vu
TheRec Posté 20 Mai 2008 Posté 20 Mai 2008 Bonjour, À priori, c'est un problème assez classique de Internet Explorer, lorsque les éléments n'ont pas encore tous été parcourus par le parseur DOM, ils ne sont pas disponibles. Je te conseille de changer la ligne : window.addEvent('load',function() { en window.addEvent('domready',function() { dans ton fichier /js/mqs.js Ainsi l'événement sera appelé dès que le parseur DOM aura redonné la main au moteur de rendu des navigateurs. Pour information, sous jQuery (dont la version 1.2.4 vient de sortir), l'équivalent est la méthode "ready" qu'on applique à l'objet document (ce qui sémantiquement est plus juste) Bonne continuation.
Ifmy Posté 20 Mai 2008 Posté 20 Mai 2008 avec load l'accès aux éléments doit être bon normalement http://demos.mootools.net/DomReadyVS.Load
Gregory Posté 20 Mai 2008 Auteur Posté 20 Mai 2008 merci! j'ai remis le "domready" que j'avais changé pour "load" histoire de faire un test Mais ce problème est toujours la!
TheRec Posté 20 Mai 2008 Posté 20 Mai 2008 Le problème se situe sans doute dans le fait que tu appelles ta fonction load (pour la carte Google Maps) directement dans le corps de ta page xHTML (<body>) et non dans l'en-tête (<head>)... essaie de l'appeler à l'événement docready (comme ta fonction pour inclure le code Google Analytics) ... ou au pire à l'événement load, mais à priori il n'y a pas de contre indication à le faire dès que le DOM est prêt. Du moins le problème n'existe que sur la page où tu effectue ce chargement de la Google Maps, pas d'erreur sur les autres sous IE. P.S. : Pardon pour la "fausse" piste de docready, mais en même temps pourquoi attendre le load si tu n'agit pas sur des images
Ifmy Posté 20 Mai 2008 Posté 20 Mai 2008 pourquoi attendre le load si tu n'agit pas sur des images Entièrement d'accord Bon reprenons depuis le début Rien avoir mais bon : on fait <h1><a></a></h1> et non <a><h1></h1></a> et il faut remplacer les & par & Ensuite, oui vous devriez centraliser votre code javascript dans domready. J'ai repéré (je ne sais plus ou) <!--- au lieu de <!-- D'après la console d'erreurs de safari: [The HTML that caused this error was generated by a script.] <style> is not allowed inside <div>. Moving <style> into the <head>.http://www.malta-quality-schools.org/fr/home.htm (line 100)[The HTML that caused this error was generated by a script.] <style> is not allowed inside <div>. Moving <style> into the <head>.http://www.malta-quality-schools.org/fr/home.htm (line 100)ReferenceError: Can't find variable: urchinTrackerhttp://www.malta-quality-schools.org/fr/home.htm (line 2) Erreur à corriger aussi car la map n'est pas chargée sur safari. Pour urchintracker remplacé : urchinTracker(); par if (typeof(urchinTracker) == "function") {urchinTracker();}
Gregory Posté 20 Mai 2008 Auteur Posté 20 Mai 2008 Merci pour ces indications! je vais regarder ces différents points demain Bien vu la goolemap ne fonctionne pas sur safari.. par contre il n'y a que sur la home que je teste cette façon du javascript séparé pour les google analytics on approche du but!
Gregory Posté 21 Mai 2008 Auteur Posté 21 Mai 2008 Bonjour! Alors j'ai corrigé : le scripte de détection pour la clé googlemap dans le head ainsi que la fonction Load() dans le body "onload" maintenant la googlemap fonctionne dans safari et autres! J'ai aussi testé en mettant le premier javascript (<script id="g" src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>) dans le code avec un ID pour qu'ensuite le mqs.js injecte la bonne clé après cette balise javascipt. Aussi essayé de mettre innerHTML = '_uact....' plutot que de faire un setHTML mais rien n'y fait...
TheRec Posté 21 Mai 2008 Posté 21 Mai 2008 Il y a également une pratique que j'éviterai à ta place, cela concerne ta fonction "include", qui sert à ajouter le script de Google Maps (en fonction du domaine), tu utilises un document.write à cet endroit, certes c'est plus "facile" mais cela a un impact sur le changement de la page et si d'aventure tu viens à servir ta page XHTML en tant que application/xhtml+xml c'est fortement déconseillé pour XHTML 1.0 et totaltement proscrit en XHTML 1.1, donc autant s'y mettre tout de suite et utiliser le DOM comme tu le fais pour Google Analytics. Ou encore mieux, comme tu sembles utiliser un langage interprété côté serveur (PHP), tu peux faire l'inclusion du bon code (pour Google Maps et Google Analytics) en fonction de la variable $_SERVER['HTTP_HOST'].
Gregory Posté 21 Mai 2008 Auteur Posté 21 Mai 2008 Oui j'utilise un CMS mais avec des pages publiées, identique pour ces 2 noms de domaines (en .com et .org) donc difficile de faire autrement que par javascript... Cependant pour la goolemap je peux essayer d'inclure la bonne clé via le fichier mqs.js et non dans la page directement. C'est ce que tu proposes?
Ifmy Posté 21 Mai 2008 Posté 21 Mai 2008 (modifié) Je vous ai donné la solution pour corriger le bug sous firefox (à la fin de mon dernier post) le reste c'était cosmétique edit : theRec vous vouliez dire plus haut jQuery 1.2.5 non ? jeresig Bahhhh... just found out that the 1.2.4 release may have been corrupted, missing some patches. Not sure how it happened, we may go to 1.2.5. Modifié 21 Mai 2008 par Ifmy
TheRec Posté 21 Mai 2008 Posté 21 Mai 2008 Cependant pour la goolemap je peux essayer d'inclure la bonne clé via le fichier mqs.js et non dans la page directement. C'est ce que tu proposes? Non, tu peux le faire directement en PHP (je ne connais pas le CMS que tu utilise mais s'il y a un système de templates, peut-être peux-tu insérer un code dans le genre : if ($_SERVER['HTTP_HOST'] == 'www.nom-de-domaine.com') { echo "<script type\"text/javascript\">_uact = \"UA-xxxxxxx-xxx\";\n urchinTracker();</script>"; } elseif ($_SERVER['HTTP_HOST'] == 'www.nom-de-domaine.org') { echo "<script type\"text/javascript\">_uact = \"UA-xxxxxxx-yyy\";\n urchinTracker();</script>"; } Cela se placerai comme actuellement, à la fin de ton <body> après l'inclusion du fichier de Google Analytics. Pour l'inclusion de la Google Maps tu aurais une condition similaire, mais dans ton en-tête xHTML (<head>). edit : theRec vous vouliez dire plus haut jQuery 1.2.5 non ? Hé non... au moment de mon post c'était bien la 1.2.4... les versions pleuvent ces derniers jours
Ifmy Posté 21 Mai 2008 Posté 21 Mai 2008 Moi je ferais plutôt une redirection via htaccess histoire d'éviter le duplicate content et de n'avoir plus qu'une clef
TheRec Posté 21 Mai 2008 Posté 21 Mai 2008 Tout à fait d'accord, un redirection permanente du domaines de moindre importance vers le domaine principal serait plus judicieuse. Mais vu la volonté de Gregory de séparer également les statistiques de ces deux domaines je me suis dit qu'il désirait réellement avoir deux site séparés mais identiques, malgré les risques qui en découlent au niveau du référencement.
Gregory Posté 22 Mai 2008 Auteur Posté 22 Mai 2008 Oui pour ce site c'est vrai qu'une redirection via le .htaccess serait plus justiciable! Mais j'ai pris ce site comme base de teste pour un plus gros site qui lui aura du contenus différents, mais dont le principe est le même que pour ce site.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant