JavaScriptがFirefoxで正常なIEでエラーを報告するいくつかの例
1950 ワード
1.jsonデータに余分なコンマ:
コードvar man={name:''zhang' } 最後にコンマをもう一つ出す.
FireFoxで正常に、
IEでエラーが発生します.識別子、文字列または数字(Expected identifier、string or number)が不足しています.
このようなエラーはファイルの中ではあまり見つけられません.ultreditの正規表現「、[^t^p]+」でこのようなエラーを探しています. 余分なコンマを削除してもいいです.
2.jsonキーのペアのキーはIEの保留文字を侵犯しました.
jsonを定義します.var test={export:'…'} , をクリックします
FireFoxで正常に、
IEでエラーが発生します.識別子、文字列または数字(Expected identifier、string or number)が不足しています.
他のキーに修正したら、exportxなら大丈夫です.IEにはこのようなキーワードがありますか?他のものを残しましたか?知るよしがない.でもこのような問題はJsonを定義する時本当に注意しなければならなくて、そのように思いのままにすることができません.
嬉しいことに、西門兄弟の提示によって、Json名に引用符を付けると後顧の憂いがなくなります.
var test=''export':'' }
参考:
Javascript留保字(Javascript Rescerved Words)
3.json値を取る時、エラーを報告する「対象はこの属性と方法をサポートしていません.(object doesn't support this property or method)」:
元のコードはjqgridから行データを読み出して処理します.
// jqgrid , JSON :
// {"rn":"1",...,"WorkType":" " }
var rowData = jqgrid_Samples_tab.getRowData( ids[i] );
cWorkType = rowData["WorkType"];
実行 WorkType=rowData[WorkType]はエラーです.WorkType=rowData.WorkTypeに変更しても同じです.その後、var WorkType=rowData[WorkType]に変更すればいいです.また、変数名とJSONキーの名前が違っても、エラーが発生しないことが分かりました.cWorkType=rowData[WorkType]も正常に動作します.
JavaScriptでは、変数の定義に1つのvarを加えると変数が局所変数に制限されます.そうでなければ、デフォルトは大域変数です.変数範囲をテストするために、IEでJSONに対する影響や変数名とJSONキー名の同名の場合は、単独でテストプログラムを行いましたが、同様の問題は発見されませんでした.
どのような原因でこのエラーが発生しましたか?今後も同様の問題を処理する際には、グローバル変数を使用しないように注意してください.あるいは変数名はJSONキーと同名ではないです.