私は比較的巨大なECMAScriptコードベース(> 60,000 LOC)に取り組んでおり、恐ろしい友人であるInternet Explorer(特に6と7)のエラーの検出に少し苦労する傾向があります。
現時点では、RIAがGoogle Chrome、Firefox 3.6、Opera、Internet Explorer 8で正常にレンダリングされるという問題に3日間悩まされていますが、Internet Explorer 8をIE7モード(または実際のIE)で実行すると失敗します-7)。
私の質問は本当にです:IE7でエラーを生成するコードを特定するにはどうすればよいですか?
通常、私はJSLintに依存しており、通常の容疑者を捕まえる傾向があります(末尾のコンマ、嫌いです)が、この特定のケースでは、ソースと最小化の両方のすべてのコードでリンターを再実行しましたが、そうではありません私のいつもの容疑者を譲ります。だから私はIEが気に入らないものを誤って導入したと思います(誰が知っているので、どこかでdojo.mapの代わりにArray.mapを使用しましたか?)そしてそれは私の顔に爆発し、そうでない素晴らしいエラーメッセージを生成します私を助けてください(「[オブジェクトオブジェクト]」と「null」は本来あるべきではないので、上流でエラーが発生し、サイレントに失敗してこのオブジェクトを作成できなかったと思います)。
Google Closure Linterを試してみましたが、特別なことは何も得られず、GoogleClosureCompilerも私の救世主になるとは思いません。適切なエラーを取得できるように、IEをエミュレートしているかのようにコードを解析/実行できるツール(コマンドライン、Webサービスなど)はありますか?
ヒントをいただければ幸いです。
編集:これまでの私の問題を解決するためにあなたの助けをありがとう、しかし私が本当に求めているのは、特定のブラウザに対して機能セットと構文を検証することを意味する、この種のチェックを行うツールがあるかどうかです。これは、私の意見ではJSの世界にひどく欠けている種類のものです(FFやChromeの場合はそれほど多くはありませんが、明らかにデバッガーの方が少し便利です)。
EDIT2:2つのブランチ間のすべてのコード変更を調べ、問題は実際にはすでに存在しているが、以前は検出されなかったことに気づき、さらに古い変更を繰り返して絞り込んだことで、最終的に今日(3日後)に問題の根本を見つけました。混乱し、最終的には障害点に達するまでどこにでもコンソールログを追加することになります(すべての行にログを追加する正規表現のサポートについてemacsに感謝します...重いですが機能します...)。面白い事実:IEは、元々ソースの問題をキャッチしてから再スローするtrycatchブロックに表示されるはずのエラーメッセージを飲み込んだ。それでも理由はわかりませんが、そうでなければ、壊れた場合に備えてその目的のために意図されていたので、見つけるのははるかに簡単でした。変。深いレベルの再スローは好きではないかもしれません。
今のところ、実際の質問に対する答えはありませんので、質問は開いたままにしておきます。