Lazaság vagy szigor?
bug, javascript
Nem is tudom, hogy lazaság vagy szigor párti legyek, de mindenesetre a böngészők különböző szigorúságú JSON kezelése ma majd 1 órás hibakeresésembe került.
JSON-ban tulajdonképpen tulajdonság – érték párok szerepelnek, vesszővel elválasztva, úgy hogy az értékek lehetnek egyszerű változók, függvények és objektumok is.
var rrdJsonOjjektuma = {
gora: 5,
init : function(){...},
hari : {...}
};
Három sornyi objektum esetében nem jön elő semmi kellemetlen meglepetés, de ha egy nagyobb összefüggő JavaScript alkalmazásunk van, akkor az objektumunk pár száz sor méretűvé nő, és programozás közben folyamatosan adunk hozzá új és új tulajdonságokat.
Ha a végére adjuk hozzá az új tulajdonság, akkor néha előfordul, hogy lefelejtjük az eddigi utolsó, mostantól utolsó előtti tag záró } jele után a vesszőt, ami szintaktikai hibához vezet.
Véletlenül az utolsó tag záró } után is tettem egy vesszőt. A Firefox lazán kezelte a dolgot, nem jelzett hibát és rendben is ment. Szépen leprogramoztam amit akartam, működik. Megnéztem Explorerrel és abszolúte semmi JavaScript nem futott benne, és egy olyan hibaüzentet dobott, hogy a 250 soros js fileom 275 sorában szintaktikai hiba van…
Elég nehezen jöttem rá, hogy az Explorer, az Opera és a Safari nem szerette hogy a JSON utolsó tagja után is volt egy vessző (illetve egyáltalán mire megtaláltam, hogy van). A Firefox és a Camino a lazaság pártján volt és (gondolom) kivette az utolsó, felesleges vesszőt.
Így jártam ;-(
Ez a bejegyzés rrd billentyűzetéből potyogott ki 2007 június 7. napján 04:11:03-kor. Eddig 804 olvasást ért meg. A visszajelzéseket nyomonkövetheted ezzel az RSS feed-el. Véleményt nyilváníthatsz, vagy trackbackolhatsz a saját oldaladon.
JólMegMondjad!
1 vélemény
-
Bártházi András
2007 június 7. 11:24:58Ez egy “alap” szívási lehetőség… Nézőpont kérdése, hogy ki a hibás, ami biztos, hogy a Firefox a túl megengedő ezen a téren. Egyes programnyelvek megengedik a vesszőt, mások nem, bár nem néztem utána, valószínűleg az EcmaScript simán nem definiálta ezt a kérdést.



