Aller au contenu

"New Element" mootools


Gregory

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

est-il possible d'avoir une page d'exemple ? :)

Le code ne semble pas erroné a première vue.

Lien vers le commentaire
Partager sur d’autres sites

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é par Ifmy
Lien vers le commentaire
Partager sur d’autres sites

Posté (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... :mad2:

Modifié par Gregory
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 ;)

Lien vers le commentaire
Partager sur d’autres sites

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: urchinTracker
http://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();
}

Lien vers le commentaire
Partager sur d’autres sites

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 :P

on approche du but! :)

Lien vers le commentaire
Partager sur d’autres sites

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=&quot;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...

Lien vers le commentaire
Partager sur d’autres sites

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'].

Lien vers le commentaire
Partager sur d’autres sites

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?

Lien vers le commentaire
Partager sur d’autres sites

Je vous ai donné la solution pour corriger le bug sous firefox ^^ (à la fin de mon dernier post) le reste c'était cosmétique :P

edit : theRec vous vouliez dire plus haut jQuery 1.2.5 non ? :D

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é par Ifmy
Lien vers le commentaire
Partager sur d’autres sites

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 ? :D

Hé non... au moment de mon post c'était bien la 1.2.4... les versions pleuvent ces derniers jours ;)

Lien vers le commentaire
Partager sur d’autres sites

Moi je ferais plutôt une redirection via htaccess histoire d'éviter le duplicate content et de n'avoir plus qu'une clef ;)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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. :)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...