Safari est moins permissif que Firefox sur le Javascript

Je suis en pleine période de développement d’une application web qui utilise pas mal de Javascript, notamment dans des requêtes Ajax.

J’ai commencé par travailler avec Firefox + Firebug et j’ai bien avancé, jusqu’à ce que je m’aperçoive que Safari était un peu moins permissif dans le code Javascript.

Voici un exemple de ce qui passe sans problème dans Firefox 2.0.0.5 sur Mac mais pas sur Safari 2 (sur Mac aussi) :

new Ajax.Updater('relations_experts_projets_' + up, '/admin.php', {
	method: 'get',
	evalScripts: true,
	parameters: {
		c: 'experts',
		a: 'list_projets',
		ajax: '1',
		ide: ide,
	},
});

Voici maintenant ce que Safari accepte :

new Ajax.Updater('relations_experts_projets_' + up, '/admin.php', {
	method: 'get',
	evalScripts: true,
	parameters: {
		c: 'experts',
		a: 'list_projets',
		ajax: '1',
		ide: ide
	}
});

Regardez de près, c’est subtil.

Il ne doit pas y avoir de virgule après le dernier élément d’un Hash.

Ayant beaucoup codé en PHP, j’ai appris à laisser volontairement les virgules après le dernier élément d’un tableau. C’est très pratique lorsqu’on veut changer l’ordre des éléments et qu’on oublie d’ajuster la virgule.

Il semble bien que je doive revoir mes habitudes. De là à penser que le PHP est trop permissif, il n’y a qu’un pas (j’ai d’autres exemples dans ma manche).

Quand la différence entre Firefox et Safari, je ne saurai dire lequel respecte la norme ECMAScript à le lettre et encore moins lequel a raison (de la respecter, de l’assouplir, ou bien de la durcir).

Cet article, publié dans Informatique, PLUG, est tagué , , . Ajoutez ce permalien à vos favoris.

3 commentaires pour Safari est moins permissif que Firefox sur le Javascript

  1. Tiens, je n’avais jamais vraiment remarqué que PHP acceptait une virgule en fin d’array (je me suis toujours cassé la tête à fermer proprement mes array) !

  2. Guillaume dit :

    Ayant beaucoup codé en Ruby, j’ai appris à NE PAS laisser volontairement les virgules après le dernier élément d’un tableau.

    C’est pourtant toléré, mais je trouve a absurde.
    J’attend plutot un comportement du type:
    [1,2,] => [1,2,nil]
    Ou même une erreur (j’attend plutôt une erreur d’ailleurs)

    Idem pour les Hash, ceci est toléré:
    {:a => 1, :b => 2,}

    Quand à changer l’ordre des élements, je n’y vois pas vraiment l’intéret de garder cette virgue finale… aurais tu un exemple ?

  3. @Guillaume
    il m’arrivait souvent de laisser une virgule en fin de hash lorsque je définissait de longs tableaux, avec un couple par ligne de texte. Ainsi je pouvais facilement faire des copier/coller de lignes sans risquer d’avoir une erreur.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s