くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

JSON形式文法エラーの処理がブラウザで異なる

2009-09-04 09:22:55 | SEまわり
 jQueryqTip を使ってページを作っていて、次のような処理を書いた。

 処理の内容自体は、今回の件とは関係ないので、あまり読まなくても構わない。

 問題があったのは、17行。

01: $(document).ready(function(){
02: $("tr.rule").each(function(){
03:  $(this).qtip({
04:   content: $(this).attr("id"),
05:   position: { target: 'mouse'},
06:   style: {
07:    color: 'black',
08:    border: { color: 'coral' }
09:   },
10:   show: {
11:    delay: 100,
12:    when: { event: 'mouseover'}
13:   },
14:   hide: {
15:    delay: 100,
16:    when: { event: 'mouseout'}
17:   },
18:  });
19: });
20:});

 hide パラメータに対して属性 delay と when を記述して、括弧を閉じて、その後ろに "," がついている。

 PHP で配列を記述する際にはこういう書き方が許される(配列の最後の要素の後ろに "," を付けること)ため、つい癖で書いてしまった。
 JSON のオブジェクト記述形式としては誤った記述だ。

 それだけなら「不注意だな」で済むのだが、これを Firefox がエラーとして処理せず、良心的に解釈してくれてしまったため、このエラーに気付かなかった。
 IE ではこの文法エラーはエラーとして処理され、スクリプトの処理が中断されてしまった。

 こういう動作の違いがあるのは困る。

 どちらかというと、IE の動作が正しいと思った。


最新の画像もっと見る