Aujourd’hui, un petit post sur les erreurs les plus courantes ou fréquentes qui peuvent vous laisser patois devant votre ordinateur parfois pendant des heures alors que c’est souvent facile à résoudre :
Google maps :
- Fonctionne, marche sous [shal]Firefox[/shal] mais pas sous [shal]IE[/shal] : attention aux noms de variables pour le nom de la maps ou des markers ou marker manager. En effet, certains noms sont déjà utilisé par IE donc ça plante.
- Carte à moitié [shal]visible[/shal], carré gris à la place de la carte, ou [shal]carte[/shal] décalée. Revoyez toutes vos div, p ou span et fermeture de balise.
Ou (merci Fabien)
Ne pas instancier la gmap dans une fonction de type :
Event.observe(window, ‘load’, function() {
carte = new GMap2(document.getElementById(”carte”));
});
Mais plutot placer un fragment de js directement sous l’élément qui va contenir la carte (ou en bas de body); Comme ceci :
//gMap carte = new GMap2(document.getElementById(”carte”));
- Marker qui n’apparaît pas sur la carte avec le marker manager : attention, lors de la création du groupe, vous devez spécifier sur quel zoom les markers vont apparaître. J’ai perdu énormément de temps sur deux points. Trompé de zoom, du coup ils étaient bien créés mais je ne les voyais pas. Second point, problème de latitude et longitude, du coup ils étaient à un autre endroit.
Prototype :
- example is not defined : erreurs lorsque l’[shal]objet[/shal] ou variable, ici example, que vous ciblez n’existe pas.
- $(« example ») is null : erreurs lorsque l’objet, ici example, que vous ciblez n’existe pas.
- missing ) after argument list : Vous avez oublié de fermer une parenthèse, généralement pour le observe.
- missing } after property list : Vous avez oublié de fermer une parenthèse ou généralement vous avez oublié de mettre une virgule entre des paramètres. Exemple :
new Ajax.Updater("tableEditeur", "xhr/xhr_editeur_tri.php", {
method: 'post',
parameters: "modeTri="+modeTri+"&triSur="+triSur,
evalScripts: true
});
- The requested URL /example/xhr/xr_menu.php was not found on this server. : l’url que vous avez spécifié n’existe pas. Le fichier n’a donc pas été importé en appel Ajax.
Scriptaculous :
- missing ) after argument list : oublie des crochets pour des options d’effets. Exemple :
new Effect.Appear('menu_cote', {from:0.0, to:0.45});
- element is null : l’élément spécifié pour l’effet n’existe pas.
- $(« .example ») is null : attention, pour cibler les classes, vous devez utiliser les doubles dollars $$. Ici cela donnera :
$$(".example").each(function(el) {
});
D’autres erreurs seront rajoutées au fur et à mesure et n’hésitez pas à me les donner pour que je debbug votre code. Mettez l’erreur en commentaire de ce billet.


Voilà mon code, merci de débuguer le plus rapidement possible, mon chef attend :
var dist, zoom;
if (routeNodes.length == 0) { // calculate and cache coordinates of displayed polylines in pixels for better performance in routeNodes array
dist = 0;
zoom = map.getZoom();
if (gpolys.length > 0 && gpolys[0].getVertexCount() > 0 ) //store first point
routeNodes.push(normalProj.fromLatLngToPixel(gpolys[0].getVertex(0), zoom));
for (var i = 0; i < gpolys.length; i++) {
dist += gpolys[i].getLength();
for (var j = 1; j < gpolys[i].getVertexCount(); j++) {
var point = normalProj.fromLatLngToPixel(gpolys[i].getVertex(j), zoom)
point.MyIndex = i; // store the index of polyline containing this node
routeNodes.push(point);
}
}
// display route length if ‘panel’ element is present
var panel = document.getElementById(‘panel’);
if (panel) {
panel.innerHTML = (dist/1000).toFixed(1) + » km »;
}
}
if (!mouseLatLng || routeNodes.length 0) // no route is displayed or route is already being dragged
return;
zoom = map.getZoom();
var mousePx = normalProj.fromLatLngToPixel(mouseLatLng, zoom);
var minDist = 999;
var minX = mousePx.x; // we will search closest point on the line to mouse position for displaying marker there available for dragging
var minY = mousePx.y;
if (routeNodes.length > 1) {
var x,y, d1,d2,d;
var dx = mousePx.x – routeNodes[0].x;
var dy = mousePx.y – routeNodes[0].y;
d2 = dx*dx + dy*dy; // distance^2 from mouse to start of segment 1 in pixels
for (var n = 0 ; ++n d) { // closest point is outside the segment, so the real closest point is either start or end of segment
if (d1 dist) { // closest point in segment n is closest point overall so far
minDist = dist;
minX = x;
minY = y;
myNode.MyIndex = routeNodes[n].MyIndex; // remember segment closest to mouse
}
}
if (minDist > 25) { // mouse is not close enough to the displayed line
myNode.hide(); // do not display marker for dragging the polyline
}
else {
for (n = waypoints.length; –n >= 0;) { // check if mouse is not too close to existing waypoints markers
var markerPx = normalProj.fromLatLngToPixel(waypoints[n].getPoint(), zoom);
dx = markerPx.x – minX;
dy = markerPx.y – minY;
if (dx*dx + dy*dy < 25) { // mouse is too close to existing marker
myNode.hide(); // do not show additional marker for dragging the line – the user is about to drag existing waypoint
return;
}
}
myNode.setPoint(normalProj.fromPixelToLatLng(new GPoint(minX, minY), zoom));
myNode.show(); // display marker for dragging the polyline
}
//document.getElementById(‘panel’).innerHTML = ‘Mouse distance to line ‘ + n + ‘: ‘ + minDist.toFixed(2);
}
AJAX POWER!!!
Une petite info sur le prob des cartes gmap qui s’affichent mal(zones grises). Ne pas instancier la gmap dans une fonction de type :
Event.observe(window, ‘load’, function() {
carte = new GMap2(document.getElementById(« carte »));
});
Mais plutot placer un fragment de js directement sous l’élément qui va contenir la carte(ou en bas de body); Comme ceci :
//gMap
carte = new GMap2(document.getElementById(« carte »));
Et fini le soucis des zones grises… qui sentent bon le bug.
bizo Q
Merci Fabien.
Pour le premier commentaire, j’ai franchement halluciné, il me fout le code comme ça, genre au boulot pauvre tâche, et rien de plus. C’est pas les restos du coeur ici. Alors démerde-toi tout seul mon gars.
Salut Gularu,
j’ai un javascript qui affiche un calendrier, il marche sous ie et opera mais pas sous ff 2ou3, firebug me dit microcal is not defined :
<input type= »text » maxlength= »10″ id= »xdate » name= »date » value= »" onfocus= »view_microcal(true,xdate,microcal,-1,0); » onblur= »view_microcal(false,xdate,microcal,-1,0); » onkeyup= »this.style.color=testTypeDate(this.value)?’black’:'red’ »>
je suis pas sur de poster dans la bonne rubrique…désolé
est ce que ca te parle ? merci ishkur
Cela veut dire que le paramètre « microcal » que tu met dans la fonction view-microcal n’est pas définie avant.
Il faut le définir juste avant de l’utiliser.
merci Gularu pour ta réponse
Désolé pour le temps de latence…
Dois je le définir dans le head, le body ou ailleurs ?
merci
ishkur
Dans le script javascript, cette variable correspond à quoi ?
Bonjour,
dans la fonction, la var microcal c’est source, elle semble contenir le code html permettant d’afficher le mini calendrier qui s’affiche lorsque je clique sur le champ date de mon agenda php :
function view_microcal(actif,ki,source,mxS,axS)
…………………….
htm+= »« +JourM[(x+startWeek)%7]+ »« ;
htm+= »"
…………………….
//affiche le tableau
source.innerHTML=htm;
source.style.visibility= »";
dans ie, ca marche (un truc de variable qu’il declare par defaut et pas firefox qui est plus rigoureux)
mais je ne sais pas ou déclarer microcal avant
Merci
@Jo-zef
alors tu prends la fonction gmap tu la regarde bien et pis tu eteint ton ordi et tu vas te coucher parce que tu dois etre tres fatiqué
je t’attends pour manger mon petit !