Gularu.fr

Webdesign et communication sur Internet

  • Ciné : Inception...

    On en parle, en bien, en mal, on le compare à Matrix, à James Bond (?), alors il fallait obligatoirement voir ce film avec mon actrice préférée. Celle que je suis depuis Jeux d’enfants et qui se met à nu d’ailleurs. Reste [...]

Publié le 5 novembre 2008

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.




10 commentaires

  1. Jo-zef dit :

    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!!!

  2. Fabien dit :

    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

  3. Gularu dit :

    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.

  4. Ishkur dit :

    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

  5. Gularu dit :

    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.

  6. ishkur dit :

    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

  7. Gularu dit :

    Dans le script javascript, cette variable correspond à quoi ?

  8. ishkur dit :

    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

  9. sucebool dit :

    @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é

  10. lameraajozef dit :

    je t’attends pour manger mon petit !

Laisser un commentaire